2013-03-28 198 views
0

使用這個腳本UNIX我能夠檢查是否變量TEST_VAR設置與否:檢查環境變量

: ${TEST_VAR:?"Not set or empty."} 

我是新來的UNIX所以有人請解釋這是什麼命令。

回答

1

bash手冊:

${parameter:?word} 

如果參數爲空或不設置,字的膨脹(或消息 該效果,如果單詞是不存在的)被寫入到標準誤差 和如果不是交互式的,shell會退出。否則,將替換參數值 。

1

它是最初的shell註釋符號('#'到行尾之前)。很長一段時間,Bourne shell腳本以冒號作爲第一個字符。 C Shell將讀取一個腳本並使用第一個字符來確定它是用於C Shell('#'散列)還是Bourne shell(':'冒號)。那麼內核得到了在這項法案,並增加了支持「#!/路徑/到/程序」和Bourne shell得到了「#」註釋和結腸慣例走到被淘汰

看一看這個類似問題:

What's a concise way to check that environment variables are set in a Unix shell script?

+0

你錯了。在海報的例子中,它只是簡單的「:」命令(它在大多數shell中都充當了「nop」命令,但是您可以在前面/後面加上一些東西,例如:後面跟着一個$ {參數:所以它是「(什麼都不做)$ {TEST_VAR:?」沒有設置或爲空。「}:如果TESTVAR存在,它將僅僅」測試「,如果不存在則返回錯誤信息(在stderr上)實際上你並沒有錯:「:」命令可能是你提到的那個東西的後代,也是出於兼容性原因而存在的。 –