linux命令eval的用法

2021-06-28 00:01:04 字數 1017 閱讀 2031

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

linux命令eval的用法

1.eval command line 其中command line是在終端上鍵入的一條普通命令列。然而當在它前面放上eval時,其結果是shell在執行命令列之前掃瞄它兩次。如 pipe eval ls pipe wc l shell第1次掃瞄命令行時,它替換出pipe的值 接著eval使它再次掃...

Linux裡的eval命令

這個命令之前沒有用過,在網上查了一下資料,覺得人家寫的很好,所以複製過來了。語法 eval cmdline eval會對後面的cmdline進行兩遍掃瞄,如果在第一遍掃面後cmdline是乙個普通命令,則執行此命令 如果cmdline中含有變數的間接引用,則保證簡介引用的語義。舉例如下 set 11...

特殊命令eval的用法兩例

原問題來自 如何使用變數作為陣列名?補充 2小時前 23 root lvs01 a 1 24 root lvs01 array1 a b c 25 root lvs01 echo bash bad substitution解答 案例1 oldboy oldboy a oldboy oldboy ol...