在Bash中比较两个字符串时出现“command not found”错误

时间:2013-11-01 18:53:17

标签: string bash if-statement syntax compare

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

#!/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

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:92)

这是问题:

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

方括号内需要空格,使用方式如下:

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

答案 1 :(得分:8)

在相关的说明中,[ ]周围也需要空格:

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

请注意,变量确实需要用[ ]内的双引号括起来,以防止单词拆分和通配。当没有设置任何被比较的变量时,双引号也有帮助 - 否则shell将抛出语法错误。

请查看以下帖子,了解为什么我们需要[ ]周围的空格:

另一篇相关文章讨论了其他需要空格的语法元素:

最后,这篇文章讨论了[[ ]][ ]

之间的区别

相关:

答案 2 :(得分:0)

如果您正在使用bash脚本,例如:#!/bin/bash比较字符串并使用if [[ $partition == "/dev/sda2" ]]; then./scriptname.sh

运行脚本,则只需在脚本的顶部使用bash scriptname.sh

答案 3 :(得分:0)

如果脚本通过/bin/bash在本地运行,而不是通过sh在容器上运行,则可以考虑通过apk add --no-cache bash在容器上添加bash。