Shell中反引號和$()的區別
阿新 • • 發佈:2019-02-11
Shell中可以用來實現變數代換的命令有兩種,一種是由反引號括起來的一條命令另一種是由$()括起來一條命令,shell先執行這條命令,然後見輸出結果立刻代換到當前命令列中。
例如定義一個變數存放date命令的輸出:
$DATE=`data`
$echo $DATE
命令代換也可以用$()表示:$DATE=$(date) 輸出的效果是一樣的。我們知道系統是不會存在冗餘的的命令,那麼這兩種方式有什麼區別呢?下面我們再看一個例子:
i=1
time1=Fri Aug 23 11:35:21
a=$(echo \time1)
經執行,命令的輸出結果是$time1
那麼換成a=`echo \time1`輸出結果還是一樣的嗎?輸出結果如下:
Fri Aug 23 11:35:21
這種結果的原因如下:
1.反引號本身就對\進行了轉移,保留了其本身的意思,如果我們想在反引號中起到\的特殊意義的話,我們必須用兩個反斜槓來進行表示。
2.$()中不需要考慮\的問題,與我們平常使用的\一樣
反引號是老的用法,$()是新的用法,不管在學習測試中還是在實際工作中,$()的用法都是被推薦的。