1. 程式人生 > >【Shell】命令代換

【Shell】命令代換

命令代換

基本概念

命令代換的基本思想是,先執行指定的內部指令,然後將其結果替換出來,重新組成新的命令列。

兩種命令代換的格式

(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的值就被打出來了

這就後面,它會掃描兩次,然後求出引數的內容