用法: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
https://blog.csdn.net/halazi100/article/details/43342525?utm_source=blogxgwz1