"if"语句不适用于Debian Linux

Kri*_*her 3 linux sh

我有一个bash脚本,其中包含以下"if"语句.问题是我不能让它在Debian上运行(它在Fedora和CentOS上运行良好).

if [ $1 == "--daily" ]  # <--- line 116
then
countDaily
elif [ $1 == "--monthly" ] # <--- line 119
then
countMonthly
fi
Run Code Online (Sandbox Code Playgroud)

运行之后:

sh /home/kris/countsc.sh --daily
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

/home/kris/countsc.sh: 116: [: --daily: unexpected operator
/home/kris/countsc.sh: 119: [: --daily: unexpected operator
Run Code Online (Sandbox Code Playgroud)

use*_*001 5

既然你正在使用sh而不是bash,你应该使用一个等于=进行字符串比较,而不是双等==.另外,在测试语句中双引号变量是一个好习惯(尽管这个错误不是由不正确的引用引起的).

比较应该是:

if [ "$1" = "--daily" ]
Run Code Online (Sandbox Code Playgroud)

elif [ "$1" = "--monthly" ]
Run Code Online (Sandbox Code Playgroud)

  • @soulreaver如果你没有空格,那么整个块`"$ 1"==" - daily"`被认为是一个字符串.由于字符串非空,因此命令将始终求值为true (5认同)