有人能告诉我这种语法有什么问题:
if [ "$1" == "postfix" || "$1" == "all" ]; then
echo test
fi
答案 0 :(得分:2)
使用
if [ "$1" = "postfix" ] || [ "$1" = "all" ]; then
或
if [ "$1" = "postfix" -o "$1" = "all" ]; then
||
结合了两个命令([
是一个命令)。在[
... ]
内,运算符-o
用于或。
使用||
的另一种方法是在[[
内使用它而不是[
。
无论如何,=
... [
内的正确运算符是]
,因为它是POSIX标准(根据man bash
)。但是,支持==
。
答案 1 :(得分:1)
如果您想这样做,请使用[[
测试表单
if [[ $1 == "postfix" || $1 == "all" ]; then
[[
是一个类似于[
命令(但功能更强大)的bash关键字。请参阅http://mywiki.wooledge.org/BashFAQ/031和http://mywiki.wooledge.org/BashGuide/TestsAndConditionals除非您正在撰写POSIX sh,否则我们建议[[
或
if [ "$1" == "postfix" ] || [ "$1" == "all" ]; then