参见英文答案 >
Simple logical operators in Bash5个
我不确定如何在shell中进行多次测试.我在编写这个脚本时遇到了麻烦:
我不确定如何在shell中进行多次测试.我在编写这个脚本时遇到了麻烦:
echo "You have provided the following arguments $arg1 $arg2 $arg3" if [ "$arg1" = "$arg2" && "$arg1" != "$arg3" ] then echo "Two of the provided args are equal." exit 3 elif [ $arg1 = $arg2 && $arg1 = $arg3 ] then echo "All of the specified args are equal" exit 0 else echo "All of the specified args are different" exit 4 fi
问题是我每次都会收到此错误:
./compare.sh: [: missing `]’ command not found
sh正在解释&&作为shell运算符.将它更改为-a,这是[的连接操作符:
[ "$arg1" = "$arg2" -a "$arg1" != "$arg3" ]
此外,你应该总是引用变量,因为[当你放弃参数时会感到困惑.