linux shell中的eval
語法:eval cmdLine
eval會對後面的cmdLine進行兩遍掃描,如果第一遍掃描後,cmdLine是個普通命令,則執行此命令;如果cmdLine中含有變量的間接引用,則保證間接引用的語義。
舉例如下:
set 11 22 33 44
如果要輸出最近一個參數,即44,可以使用如下命令,
echo $4
但是如果我們不知道有幾個參數的時候,要輸出最後一個參數,大家可能會想到使用$#來輸出最後一個參數,
如果使用命令:
echo "\$$#"
則得到的結果是 $4,而不是我們想要的44。這裡涉及到一個變量間接引用的問題,我們的本意是輸出 $4,默認情況下,命令後忽略變量間接引用的情況。
這時候,就可以使用eval命令。
eval echo "\$$#"
得到的結果為44