比较Bash中的两个string时出现“找不到命令”错误

我的整个脚本目前是这样的:

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

如果我进入

 TestSelect.sh 

我明白了

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

我该如何解决这个问题?

这是问题:

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

方括号内需要空格,像这样使用它:

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

在相关的注释中, [ ]周围的空格也是:

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

请注意,variables确实需要用[ ]中的双引号引起来,以防止分词和匹配。 当两个被比较的variables都没有设置时,双引号也有帮助 – 否则shell将会抛出语法错误。

看看下面的post,了解为什么我们需要[ ]周围的空格:

  • 为什么在Bash中的'['之前和之后]有一个空格?

另一个相关的post谈到了其他需要空格的语法元素:

  • 为什么有时在元字符周围需要空格?

最后,这篇文章讨论了[[ ]][ ]之间的区别:

  • Bash中的单方括号和双方括号有什么区别?