81

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

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

4 回答 4

188

这是问题:

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

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

[[ "$variable" == "$blanko" ]] && echo "Nichts da!" || echo "$variable"
于 2013-11-01T18:55:05.047 回答
19

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

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

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

查看以下帖子以了解为什么我们需要空格[ ]

另一个相关的帖子也讨论了其他需要空格的语法元素:

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


有关的:

于 2017-11-02T05:11:27.933 回答
0

如果您的脚本在您的本地运行,/bin/bash但不是在您的容器上运行sh,然后考虑将 bash 添加到您的容器中apk add --no-cache bash

于 2020-05-12T02:02:48.250 回答
0

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

于 2019-07-26T04:37:48.313 回答