語法: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 指令碼名...