命令代換
由反引號括起來的也是⼀一條命令,shell先執⾏行該命令,然後將輸出結果立刻代換到當前命令列
中。如:
$ date=`date`
$ echo $date
輸出:
例如定義⼀乙個變數存放date命令的輸出:
命令代換也可以⽤用$()表⽰示: date=$(date)
區別``在執行時,shell會不管``內是什麼都先進行解釋,再把解釋後的最終結果送給shell去執行.如果解釋後的最終結果不是shell可執行的命令時,則會出錯.當然,僅僅為了把``中執行後的內容作為文字輸出,則沒什麼問題了啦.
$()在執行時,如果()中是命令,則直接丟給shell去執行;如果是變數取值,則也僅作第一層的字面解釋後丟給shell去執行.
(2)使用場合
$()用在產生的結果不會再送給shell解釋,而只作為賦值時直接使用,文字輸出時與""配合使用;
$()有在產生的結果還會再作進一步解釋時,用與不用都可以,只是提高程式可讀性之外。
在操作上,這兩者都能達到相應的效果,但是建議使用$( ),理由如下:
``很容易與''搞混亂。
在多層次的復合替換中,``必須要額外的跳脫處理(反斜線),而$( )比較直觀。
$( )的弊端是,並不是所有的類unix系統都支援這種方式,反引號基本上可用在全部的 unix shell 中使用,若寫成 shell script ,其移植性比較高。
``(反引號)需要進行轉義。而$( )無需轉義。
` `輸出localhost.localdomain
$()輸出命令$hostname
shell指令碼的命令代換
一 命令代換 命令代換是指先完成引號或者括號中的命令列,然後將其結果替換出來,在重新組成新的命令列。shell指令碼中用於命令列代換的一反引號 和 那麼這兩個又有什麼不同呢?執行後 表面上看起來兩個結果並沒有什麼不同,但仔細分析會發現有以下不同點。反引號 的缺點 a 它非常容易和單引號混淆 b 它會...
Linux xargs引數代換命令
在linux中並不是所有的命令都可以處理資料流,因此有的時候我們想將普通的命令當作管線命令來使用,那麼久可以使用xargs這個命令了,這個命令主要的用途是將 前的命令輸出的資料流轉換成引數,然後給與後面的命令使用。下面以id命令來嘗試,id命令可以輸出某個賬號的的uid,gid跟groups,但是這...
shell指令碼之命令代換
理解 和 反引號在 shel l指令碼中 有獨特的 作用,凡 是被反引 號包括的 內容sh ell會 先執行該 命令,再 將該命令 的輸出結 果代換到 當前命令 行中。所 以反引號 的作用是 命令替換 則是算數代換,在shell指令碼中,被雙括號括起來的算數命令可以被替換成算術結果。中只能用 運算子...