shell脚本中的if语句有什么问题

时间:2012-01-10 09:56:36

标签: shell unix

以下是我的陈述:

print "Ss $# $2" >&3
if [ $# -eq 4 || $# -eq 3 ] && [ $2 != "d" ]
then
        print "sss"
else
        print "lol"
fi

输出结果为:

Ss 4 s
lol

为什么“sss”没有显示?

1 个答案:

答案 0 :(得分:4)

你的if条件在语法上是不正确的。您不能在括号内放置||。将其更改为使用-o代替:

if [ $# -eq 4 -o $# -eq 3 ] && [ $2 != "d" ]
then
        print "sss"
else
        print "lol"
fi

或者,更好的是,使用[[(如果你的shell支持它),它更安全,功能更多。它支持||

if [[ ( $# -eq 4 || $# -eq 3 ) && $2 != "d" ]]
then
        print "sss"
else
        print "lol"
fi