【Shell】命令代換
阿新 • • 發佈:2018-12-26
命令代換
基本概念
命令代換的基本思想是,先執行指定的內部指令,然後將其結果替換出來,重新組成新的命令列。
兩種命令代換的格式
(1) 反引號 ``
#!/bin/bash
DATE=`date`
echo $DATE
(2) $()
#!/bin/bash
FILE=$(ls)
echo $FILE
兩者的區別和聯絡
1、反引號適用於所有Unix系統,但是$()只有一部分系統支援。前者的可移植性要好
2、反引號容易和單引號進行混淆,$()則清晰明瞭,一清二楚
3、反引號對反斜槓 '\' 進行跳脫處理,而$()不會
相關的eval指令
功能
告知shell取出eval的引數,重新運算求出引數的內容。
語法
eval [引數]
補充
eval可讀取一連串的引數,然後再依引數本身的特性來執行。
引數
引數不限數目,彼此之間用分號分開。
eval執行命令列前掃描兩次,再次運算求出引數內容,eval是對Bash Shell命令列處理規則的靈活應用,進而構造”智慧”命令實現複雜的功能。
練習
由於單引號會保持其內容字面值,所以echo打出來的就是字串${a}
當加了命令eval後,a的值就被打出來了
這就後面,它會掃描兩次,然後求出引數的內容