2011-12-22 100 views
3
i=0 

if [$i -eq 0] 
then 
    echo "i is equal to 0" 
else 
    echo "NOT EQUAL <><><><><><><><><><><><><><><><><><><>" 
fi 

它是一個bash腳本的一部分,它總是需要else分支。我完全陌生,所以它可能是傻的東西有人可以幫我弄清楚爲什麼這不起作用?

+0

'[$ i -eq 0]'的替代方案可能是'((i == 0))' – potong 2011-12-22 21:39:09

回答

5

你需要[ $i而不是[$i

這是因爲[是內置命令,而$i應該是它的第一個參數。如果您錯過了命令和參數之間的空間,那麼shell將查找[$i命令,並且在評估後會告訴您沒有[0命令被執行。

+0

是的。我傾向於這樣寫「如果[$ x comp $ y];那麼」因爲我喜歡我的話,然後在同一行。 – MJB 2011-12-22 20:47:00

+0

Hmmno,'['不是內建命令:它是(test)命令的(sym)鏈接。實際上,'test'和'['之間的唯一區別在於'['形式需要']'作爲最後一個參數;)嘗試''在你的shell中。 – fge 2011-12-22 22:06:34

+1

@fge:它取決於shell的實現。在較舊的操作系統上,它曾經是一個符號鏈接。所有現代的炮彈都有這樣的內置。運行'輸入''查看。 – 2011-12-22 22:39:07

1

''''之前'''之後需要空格。 '['是一個命令。

相關問題