2012-01-10 68 views
1

這裏是我的發言:哪些錯誤與如果shell腳本語句

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

輸出是:

Ss 4 s 
lol 

爲什麼 「SSS」 未被顯示?

+1

你正在使用哪個shell? – Sjoerd 2012-01-10 10:02:46

+0

ksh shell我正在使用 – footy 2012-01-10 10:11:43

回答

4

您的if條件在語法上不正確。括號內不能有||。將其更改爲使用-o代替:

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

,或者甚至更好,使用[[(如果你的外殼支持的話),這是更安全,具有更多的功能。它支持||

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

+1來使用'[['' – 2012-01-10 14:11:31