问题出在脚本调用上。您正在发出:
$ sudo sh if_test.sh
在Ubuntu系统上,
/bin/sh
是
dash,不是
bash,并且
dash不支持双括号关键字(或者在发布本文时还没有,我还没有仔细检查)。您可以通过显式调用
bash来解决您的问题:
$ sudo bash if_test.sh
另外,您可以使脚本可执行,并依靠shebang行:
$ chmod +x if_test.sh$ sudo ./if_test.sh
另请注意,在双方括号之间使用时,
==是模式匹配运算符,而不是等价运算符。如果要测试是否相等,可以使用
-eq:
if [[ "14" -eq "14" ]]; then echo "FOO"fi
或双括号:
if (( 14 == 14 )); then echo "FOO"fi



