Shell 命令替換是指將命令的輸出結果賦值給某個變量
Shell 中有兩種方式能夠完成命令替換,一種是反引號
,一種是$(),使用方法以下:bash
variable=`commands` variable=$(commands)
其中,variable 是變量名,commands 是要執行的命令。commands 能夠只有一個命令,也能夠有多個命令,多個命令之間以分號;分隔。unix
a=`expr 1 + 1` echo $a
在操做上,這二者都是達到相應的效果,可是建議使用$( ),理由以下: 1.``很容易''搞混亂,尤爲對初學者來講。 2.在多層次的複合替換中,``必需要額外的轉義字符處理(反斜線),而$( )比較直觀。 3.$( )的弊端是,並非全部的類unix系統都支持這種方式,但反引號是確定支持的。
變量替換 變量替換能夠根據變量的狀態(是否爲空、是否認義等)來改變它的值 能夠使用的變量替換形式: 形式 說明 ${var} 變量原本的值 ${var:-word} 若是變量 var 爲空或已被刪除(unset),那麼返回 word,但不改變 var 的值。 ${var:=word} 若是變量 var 爲空或已被刪除(unset),那麼返回 word,並將 var 的值設置爲 word。 ${var:?message} 若是變量 var 爲空或已被刪除(unset),那麼將消息 message 送到標準錯誤輸出,能夠用來檢測變量 var 是否能夠被正常賦值。 若此替換出如今Shell腳本中,那麼腳本將中止運行。 ${var:+word} 若是變量 var 被定義,那麼返回 word,但不改變 var 的值。