2011-11-12 27 views
3

在shell腳本(bash)爲什麼條件得到滿意的在bash中,爲什麼if [1]不會失敗?

if [ 1 ] 
then 
echo should not enter 
fi 

#Output 
should not enter 
+0

因爲1等於真 – chown

+2

好問題。很高興看到人們不害怕問基本知識。 –

+0

@PreetSangha謝謝 – puk

回答

7

bash中的方括號相當於使用方括號內的參數調用testman test

STRING相當於-n STRING

-n STRING STRING的長度爲非零

,和1是不是一個空字符串。 if [ 0 ],if [ false ]if [ no ]有相同的結果,但if [ "" ]還沒有。

1

因爲1是不是空字符串;它有一個字符,它是數字「1」。

2

什麼可能不是很明顯的是,這兩者有很大的不同:

if [ false ] 

if false 

首先,作爲thitonIgnacio Vazquez-Abrams說,隱式檢查,如果false是空。第二個版本測試命令的退出狀態false。 (退出狀態的測試不是字面上的真/假測試,它以數字代碼爲代表檢查成功或失敗,你可以想象,退出狀態false總是失敗,這是它的工作。)

欲瞭解更多信息,BashGuideGreg's Wiki非常清楚。

相關問題