以下是我的陈述:
print "Ss $# $2" >&3
if [ $# -eq 4 || $# -eq 3 ] && [ $2 != "d" ]
then
print "sss"
else
print "lol"
fi
输出结果为:
Ss 4 s
lol
为什么“sss”没有显示?
答案 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