eval 讓shell指令碼動態的構建命令

2022-03-20 20:36:11 字數 652 閱讀 6714

用法:eval command-line

原理:eval主要用在對引數的特殊處理上面的,一般的命令列,shell處理引數就只執行一遍,像轉義和變數轉變;但加上eval後就可以對引數多進行一遍處理;

乙個eval只能使shell對引數多一次處理,因此有幾個eval就可以多加幾次,即eval eval command-line 這樣就能對引數進行三次編譯,但此時應特別注意引數的轉義。

eval命令會計算(evalue)它的引數,這些引數作為表示式計算後重新組合為乙個字串,然後作為乙個命令被執行。

eval最常見的用法是將動態生成的命令列計算並執行。

eval command-line

其中command-line是在終端上鍵入的一條普通命令列。然而當在它前面放上eval時,其結果是shell在執行命令列之前掃瞄它兩次。如:

pipe="|"

eval ls $pipe wc -l

shell第1次掃瞄命令行時,它替換出pipe的值|,接著eval使它再次掃瞄命令列,這時shell把|作為管道符號了。

如果變數中包含任何需要shell直接在命令列中看到的字元(不是替換的結果),就可以使用eval。命令列結束符(; | &),i/o重定向符(< >)和引號就屬於對shell具有特殊意義的符號,必須直接出現在命令列中。

ref

shell指令碼 eval執行shell命令

和其他語言的eval功能差不多,都是將乙個儲存執行語句的變數作為引數,eval會讓變數所儲存的語句執行。下面是乙個執行表單提交的命令 注意,這裡只是示例,應用中不要這麼使用,很危險 bin bash index.cgi echo content type text html charset utf ...

Linux 中shell指令碼 eval調研

eval可以讀取一連串的引數,然後按照引數特性來執行。引數數目不限,彼此之間用分號隔開。eval會對後面的命令進行兩遍掃瞄,如果第一遍掃瞄後,命令是個普通命令,則執行此命令 如果命令中含有變數的間接引用,則保證間接引用的語義。也就是說,eval命令將會首先掃瞄命令列進行所有的置換,然後再執行該命令。...

Shell中, eval的用法

eval是shell內建的命令。基本用法如下 eval arguments 主要功能是讀入arguments並執行之。arguments的退出碼 exit code 會被當做eval的退出碼。如果沒有arguments,則退出碼是0。在平時的使用中,我們一般會用到eval的2個特性。cat pars...