日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

eval的用法

發布時間:2024/4/11 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 eval的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
shell中的eval 功能說明:重新運算求出參數的內容。
語  法:eval [參數]
補充說明:eval可讀取一連串的參數,然后再依參數本身的特性來執行。
參  數:參數不限數目,彼此之間用分號分開。 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 $#)" shell 也提供了 eval 命令,如同熟悉的其他腳本語言,會將它的參數做為命令執行,初看會疑惑為什么shell要提供兩種動態執行命令字串的機制,但是經過仔細分析,才發現shell的eval同其他語言有很大區別。
1.shell 中的函數雖然可以通過return 返回,但是這里的return 相當于 exit,只能是個狀態值用于測試,而不能像其它語言一樣返回復雜的結果,其處理結果只能通過輸出到標準輸出經過 `` ,$()取得。
2.shell 中的 eval
2.1 不能獲得函數處理結果 ,如1所說,所有命令,函數的處理結果只能通過 ``來獲得,那么其它語言中利用eval來獲得動態生成代碼執行后的輸出變得不可能。
2.2 eval 嵌套無意義 ,在其他語言中可以通過 eval_r(eval_r("code")),來執行(執行動態生成的code的返回),而由于shell 中 eval 將后面的eval命令簡單當作命令字符串執行,失去了嵌套作用,嵌套被命令替換取代。

$()與反引號的區別 共同點:反引號:會將反引號里面的內容解釋為命令行,開啟子shell,然后去執行命令,然后將輸出結果替換反引號以及其中的命令。 $():可以分解為兩個部分,一個是$符號,另外一個是()小括號$符的作用是變量替換,即用變量的值去替換當前的內容,小括號則是開一個子shell優先去執行小括號內部的命令 不同點:在$(命令)中,命令部分的內容不會被父shell解析,而反引號的部分卻會被解析,

總結

以上是生活随笔為你收集整理的eval的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。