比较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中的单方括号和双方括号有什么区别?