shell中反引號和$()的區別以及eval命令
阿新 • • 發佈:2019-02-04
反引號和$()的區別
反引號和$()都是shell指令碼中用來進行命令代換的命令,命令代換就是執行一個命令將其結果交給一個變數。
echo ‘echo \\ ’ //反引號
echo $(echo \\ )
我們再把指令碼改成8個\
總結:
1、反引號本身對\做了解釋,保留了本身的意思。如果我們想在反引號中起到\的特殊意義,用兩個\來表示
2、
eval命令
eval命令的作用是再次執行命令列處理,也就是對一個命令列執行兩次命令列的處理(執行兩次命令列處理不是執行兩次命令 )。eval後面跟一個命令,eval會對後面的命令進行兩次掃描,如果第一次掃描發現這個命令是個普通的命令就會執行這個命令,如果後面的命令是含有變數的簡潔引用,就保證間接引用的語義。
1、eval命令先掃描命令列做一個置換,然後再執行該命令。這個命令適用於那些無法掃描一次就實現其功能的變數,這個命令會對變數進行兩次掃描,這就是複雜命令。不過eval命令也適用於簡單的命令時是對其的回顯。
2、eval也可以用於回顯簡單變數,不一定時複雜變數
3、兩次掃描,我們首先建立一個名為test的小檔案,在這個小檔案中含有一些文字。接著,將cat test賦給變數myfile,現在我們e cho該變數,看看是否能夠執行上述命令。
4、獲得最後一個引數
echo “Last argument is
(evalecho$ #)”
echo “Last argument is(evalecho #)”