在shell腳本(bash
)爲什麼條件得到滿意的在bash中,爲什麼if [1]不會失敗?
if [ 1 ]
then
echo should not enter
fi
#Output
should not enter
在shell腳本(bash
)爲什麼條件得到滿意的在bash中,爲什麼if [1]不會失敗?
if [ 1 ]
then
echo should not enter
fi
#Output
should not enter
bash中的方括號相當於使用方括號內的參數調用test
。 man test
說
STRING相當於-n STRING
和
-n STRING STRING的長度爲非零
,和1是不是一個空字符串。 if [ 0 ]
,if [ false ]
和if [ no ]
有相同的結果,但if [ "" ]
還沒有。
因爲1
是不是空字符串;它有一個字符,它是數字「1」。
什麼可能不是很明顯的是,這兩者有很大的不同:
if [ false ]
和
if false
首先,作爲thiton和Ignacio Vazquez-Abrams說,隱式檢查,如果串false
是空。第二個版本測試命令的退出狀態false
。 (退出狀態的測試不是字面上的真/假測試,它以數字代碼爲代表檢查成功或失敗,你可以想象,退出狀態false
總是失敗,這是它的工作。)
欲瞭解更多信息,BashGuide在Greg's Wiki非常清楚。
因爲1等於真 – chown
好問題。很高興看到人們不害怕問基本知識。 –
@PreetSangha謝謝 – puk