1. 程式人生 > >Shell中反引號和$()的區別

Shell中反引號和$()的區別

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.$()中不需要考慮\的問題,與我們平常使用的\一樣

  反引號是老的用法,$()是新的用法,不管在學習測試中還是在實際工作中,$()的用法都是被推薦的。