命令代換 和 的區別

2021-08-02 15:18:17 字數 1015 閱讀 1201

命令代換

由反引號括起來的也是⼀一條命令,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指令碼中,被雙括號括起來的算數命令可以被替換成算術結果。中只能用 運算子...