溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在Shell中使用eval語句

發(fā)布時間:2021-04-02 15:53:03 來源:億速云 閱讀:232 作者:Leah 欄目:開發(fā)技術(shù)

如何在Shell中使用eval語句?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

功能說明:告知shell取出eval的參數(shù),重新運(yùn)算求出參數(shù)的內(nèi)容。
語  法:eval [參數(shù)]
補(bǔ)充說明:eval可讀取一連串的參數(shù),然后再依參數(shù)本身的特性來執(zhí)行。
參  數(shù):參數(shù)不限數(shù)目,彼此之間用分號分開。
1.執(zhí)行命令行之前掃描它兩次,再次運(yùn)算求出參數(shù)的內(nèi)容。

代碼如下:


[root@localhost blue]# a="ls |more"
[root@localhost blue]# $a                                           #ls


將 | 和 more 看成了參數(shù),而不是將文件按頁顯示

代碼如下:


ls: cannot access |more: No such file or directory
[root@localhost blue]# eval $a                                    #取出


其參數(shù)并再次執(zhí)行它們

代碼如下:


1
1.cpp
2
2.cpp
3
3.cpp
[root@localhost test]# a="123"
[root@localhost test]# echo '${'"a"'}'                        
${a}
[root@localhost test]# eval echo '${'"a"'}'                #再次執(zhí)行${a}命令
123 


2.eval取得最后一個參數(shù)

代碼如下:


[root@localhost blue]# echo 'eval echo \$$#' > last
[root@localhost blue]# cat last
eval echo \$$#
[root@localhost blue]# ./last 1 2 3 4
4


另外其他高級用法后作補(bǔ)充!
eval是對Bash Shell命令行處理規(guī)則的靈活應(yīng)用,進(jìn)而構(gòu)造"智能"命令實(shí)現(xiàn)復(fù)雜的功能。
上面提及的命令是eval其中一個很普通的應(yīng)用,它重復(fù)了1次命令行參數(shù)傳遞過程,純粹地執(zhí)行命令的命令。
其實(shí)它是bash的難點(diǎn),是高級bash程序員的必修之技。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI