linux點滴學習之eval命令

2021-09-11 04:14:43 字數 1203 閱讀 8758

語法:eval cmdline

eval會對後面的cmdline進行兩遍掃瞄,如果第一遍掃瞄後,cmdline是個普通命令,則執行此命令;如果cmdline中含有變數的間接引用,則保證間接引用的語義。

舉例如下:

set 11 22 33 44

如果要輸出最近乙個引數,即44,可以使用如下命令,

echo 4但是

如果我們

不知道有

幾個引數

的時候,

要輸出最

後乙個參

數,大家

可能會想

到使

用4 但是如果我們不知道有幾個引數的時候,要輸出最後乙個引數,大家可能會想到使用

4但是如果我

們不知道

有幾個參

數的時候

,要輸出

最後乙個

引數,大

家可能會

想到使用

#來輸出最後乙個引數,

如果使用命令:

echo 「$$#」

則得到的結果是 $4,而不是我們想要的44。這裡涉及到乙個變數間接引用的問題,我們的本意是輸出 $4,預設情況下,命令後忽略變數間接引用的情況。

這時候,就可以使用eval命令。

eval echo 「$$#」

得到的結果為44

**:1.eval命令將會首先掃瞄命令列進行所有的替換,憨厚再執行命令。該命令使用於那些一次掃瞄無法實現其功能的變數。該命令對變數進行兩次掃瞄。這些需要進行兩次掃瞄的變數有時候被稱為複雜變數。

2.eval也可以用於回顯簡單變數,不一定時複雜變數。

name=zone

eval echo $name等價於echo $name

3.兩次掃瞄

test.txt內容:hello shell world!

myfile=「cat test.txt」

(1)echo $myfile  #result:cat test.txt

(2)eval echo $myfile  #result:hello shell world!

從(2)可以知道第一次掃瞄進行了變數替換,第二次掃瞄執行了該字串中所包含的命令

4.獲得最後乙個引數

echo 「last argument is $(eval echo $$#)」

echo 「last argument is $(eval echo $#)」

**:

點滴學習Linux

linux centos 下使用總結 1 php的開發使用 xampp 搭建的環境 2 xampp安裝方法 sudo tar xzvf xampp.1.7.1.tar.gz c opt 在 opt lampp目錄即可看到lampp 以後使用就用 sudo opt lampp lampp start ...

python之函式eval()學習

python中有許多很有用的內建函式,比如 eval 這個函式。能夠熟練的使用這些內建函式可以起到很多事半功倍的功效。eval 官方文件裡面給出來的功能解釋是 將字串string物件轉化為有效的表示式參與求值運算返回計算結果。語法上 呼叫的是 eval expression,globals none...

Linux學習筆記之shell程式設計(基礎命令)

目錄 環境變數 位置變數 預定義變數 自定義變數 算數運算 內建測試判斷 成功 成立 1 失敗 不成立 0 數值比較 字串測試 檔案測試 date 取字串 find 查詢檔案 使用者環境變數 root bash profile 系統環境變數 etc profile 通常和指令碼聯合使用 0 指令碼名...