天天看點

linux指令eval的用法

1. eval command-line

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

pipe="|"

eval ls $pipe wc -l

shell第1次掃描指令行時,它替換出pipe的值|,接着eval使它再次掃描指令行,這時shell把|作為管道符号了。

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

2. eval echo \$$# 取得最後一個參數

如:cat last

eval echo \$$#

./last one two three four

four

第一遍掃描後,shell把反斜杠去掉了。當shell再次掃描該行時,它替換了$4的值,并執行echo指令

3.以下示意如何用eval指令建立指向變量的“指針”:

x=100

ptrx=x

eval echo \$$ptrx 指向ptrx,用這裡的方法可以了解b中的例子

100 列印100

eval $ptrx=50 将50存到ptrx指向的變量中。

echo $x

50 列印50

本文轉自 轉身撞牆角 51CTO部落格,原文連結:http://blog.51cto.com/chentianwang/1685276

繼續閱讀