shell指令碼 命令代換

2021-08-21 06:52:25 字數 1115 閱讀 1801

什麼是命令代換

命令代換簡單來說就是在shell內部巢狀多條命令,一次執行得到結果

shell的命令代換有兩種方式可以實現:

來看例子:

既然這兩種方式都可以進行命令代換,那麼它們有什麼區別呢?

$( )支援命令巢狀使用,而反引號是不行的

這條命令雖然沒有什麼意義,但是很好的說明了$( )是支援巢狀使用的

反引號比較陳舊容易和單引號混淆

反引號會對 \ 進行跳脫處理,而$( )不會

由上可知:反引號中\$並沒有將$的特殊意義轉換,反引號包含的內容echo \$hostname仍然被解釋為乙個echo,$hostname 取到了這個變數的值並輸出

$()則正好相反,$明顯被\轉義成了乙個普通字元,所以並沒有取到變數值,而是返回了字串本身的意思,故而返回了$hostname

再來舉乙個例子:

我們知道,shell裡的單引號會保持所有字元的字面值,所以引號裡的執行結果應該是 \ 。但是用反引號輸出的結果卻是 \ ,這就是由於它對 \ 進行了跳脫處理。

所以,一般情況下建議使用$(),這樣比較直觀,但是它也缺點,並不是所有的unix系統都支援這種方式,但反引號是肯定支援的。也就是說它的移植性不如反引號。

shell指令碼之命令代換

理解 和 反引號在 shel l指令碼中 有獨特的 作用,凡 是被反引 號包括的 內容sh ell會 先執行該 命令,再 將該命令 的輸出結 果代換到 當前命令 行中。所 以反引號 的作用是 命令替換 則是算數代換,在shell指令碼中,被雙括號括起來的算數命令可以被替換成算術結果。中只能用 運算子...

shell指令碼的命令代換

一 命令代換 命令代換是指先完成引號或者括號中的命令列,然後將其結果替換出來,在重新組成新的命令列。shell指令碼中用於命令列代換的一反引號 和 那麼這兩個又有什麼不同呢?執行後 表面上看起來兩個結果並沒有什麼不同,但仔細分析會發現有以下不同點。反引號 的缺點 a 它非常容易和單引號混淆 b 它會...

shell指令碼 命令

命令連線符 表示不管前面是否執行成功都要執行 表示前面執行成功才執行後面 表示前面執行失敗才執行後面 read命令 read 選項 值 read p 提示語句 n 字元個數 t 時間秒 s 不顯示 運算子 expr 3 2 結果賦值 sum expr 3 2 或者 sum 3 2 乘法expr 3 ...