Getting “command not found” error while comparing two strings in Bash

送分小仙女□ 提交于 2019-12-16 20:05:32

问题


My whole Script is currently this:

#!/bin/sh   
clear;   
blanko="";   
# Dummy-Variablen
variable=Testvariable;   
if [[$variable == $blanko]];
then   
  echo "Nichts da!"   
else   
  echo $variable   
fi

and if i enter

TestSelect.sh

i get

/usr/bin/TestSelect.sh: line 6: [[Testvariable: command not found   
Testvariable

how can i fix this?


回答1:


This is problem:

if [[$variable == $blanko]];

Spaces are required inside square brackets, use it like this:

[[ "$variable" == "$blanko" ]] && echo "Nichts da!" || echo "$variable"



回答2:


On a related note, spaces are required around [ ] as well:

if [ "$variable" = "$blanko" ]; then
  # more code here
fi

Note that variables do need to be enclosed in double quotes inside [ ] to prevent word splitting and globbing. Double quotes also help when either of the variables being compared is not set - shell will throw a syntax error otherwise.

Look at the following post to understand why we need spaces around [ ]:

  • Why should there be a space after '[' and before ']' in Bash?

Another related post that talks about other syntax elements that need spaces as well:

  • Why is whitespace sometimes needed around metacharacters?

Finally, this post talks about the difference between [[ ]] and [ ]:

  • Difference between single and double square brackets in Bash

Related:

  • “0: command not found” in Bash



回答3:


Just use #!/bin/bash on tope of script if you are using bash scripting like: if [[ $partition == "/dev/sda2" ]]; then to compare string and run script with ./scriptname.sh or bash scriptname.sh



来源:https://stackoverflow.com/questions/19733437/getting-command-not-found-error-while-comparing-two-strings-in-bash

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!