Shell中eval的用法示例
功能說(shuō)明:告知shell取出eval的參數(shù),重新運(yùn)算求出參數(shù)的內(nèi)容。
語(yǔ) 法:eval [參數(shù)]
補(bǔ)充說(shuō)明:eval可讀取一連串的參數(shù),然后再依參數(shù)本身的特性來(lái)執(zhí)行。
參 數(shù):參數(shù)不限數(shù)目,彼此之間用分號(hào)分開(kāi)。
1.執(zhí)行命令行之前掃描它兩次,再次運(yùn)算求出參數(shù)的內(nèi)容。
[root@localhost blue]# a="ls |more"
[root@localhost blue]# $a #ls
將 | 和 more 看成了參數(shù),而不是將文件按頁(yè)顯示
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取得最后一個(gè)參數(shù)
[root@localhost blue]# echo 'eval echo \$$#' > last
[root@localhost blue]# cat last
eval echo \$$#
[root@localhost blue]# ./last 1 2 3 4
4
另外其他高級(jí)用法后作補(bǔ)充!
eval是對(duì)Bash Shell命令行處理規(guī)則的靈活應(yīng)用,進(jìn)而構(gòu)造"智能"命令實(shí)現(xiàn)復(fù)雜的功能。
上面提及的命令是eval其中一個(gè)很普通的應(yīng)用,它重復(fù)了1次命令行參數(shù)傳遞過(guò)程,純粹地執(zhí)行命令的命令。
其實(shí)它是bash的難點(diǎn),是高級(jí)bash程序員的必修之技。
相關(guān)文章
詳解linux下利用crontab創(chuàng)建定時(shí)任務(wù)
這篇文章主要介紹了linux下利用crontab創(chuàng)建定時(shí)任務(wù)的相關(guān)資料,需要的朋友可以參考下2017-04-04
合并一個(gè)文件夾下多個(gè)文件內(nèi)容的單行shell命令
有時(shí)候我們需要合并一個(gè)文件夾下多個(gè)文件內(nèi)容,那么就可以參考下面的代碼,單行shell就是可以實(shí)現(xiàn)了,需要的朋友可以參考下2013-02-02
linux執(zhí)行sh腳本報(bào)錯(cuò):$’\r’: 未找到命令的完美解決方法
本文給大家介紹linux執(zhí)行sh腳本報(bào)錯(cuò):$’\r’: 未找到命令的完美解決方法,原因分析及解決辦法給大家講解的非常明白,感興趣的朋友跟隨小編一起看看吧2023-02-02
探究正常運(yùn)行的shell腳本為啥有時(shí)會(huì)報(bào)錯(cuò)
正常運(yùn)行的shell腳本為啥有時(shí)會(huì)報(bào)錯(cuò)呢,這篇文章主要就是來(lái)和大家探索一下報(bào)錯(cuò)的原因以及解決方法,感興趣的小伙伴可以跟隨小編一起了解一下2023-08-08

