我寫了被評估,如果形式的語句:
if [ -n "${VAR:-x}" ]; then
#do something
export VAR=#something
fi
我的shell腳本調用這個聲明兩次,並且令人驚訝地通過了兩次。
[提示(也許...):這個確切的代碼在一個包含文件中的函數中重複。 if語句首先在函數調用之前進行評估。當函數被調用時,它被「再次」評估。]
這裏是什麼事?我是否錯誤地理解了-x標誌?
謝謝!
我寫了被評估,如果形式的語句:
if [ -n "${VAR:-x}" ]; then
#do something
export VAR=#something
fi
我的shell腳本調用這個聲明兩次,並且令人驚訝地通過了兩次。
[提示(也許...):這個確切的代碼在一個包含文件中的函數中重複。 if語句首先在函數調用之前進行評估。當函數被調用時,它被「再次」評估。]
這裏是什麼事?我是否錯誤地理解了-x標誌?
謝謝!
${VAR:-x}
說如果VAR
沒有設置替換字符串x
否則替換值爲VAR
。
同樣,${FOO:-bar}
說替代的FOO
值或bar
如果FOO
沒有設置as described here的字符串。
這意味着-n "${VAR:-x}"
將始終爲真,因爲-n
表示檢查是否空白,並且"${VAR:-x}"
永遠不會爲空。
那麼我怎樣才能查詢一個變量的存在/非空? – Yaneeve 2009-05-28 10:58:34
我的想法來自於: http://fixunix.com/questions/15902-bash-checking-if-env-var-set.html 並被誤導。也許這是我的不好... – Yaneeve 2009-05-28 11:16:17