Linux裡的eval命令

2022-06-08 04:21:07 字數 957 閱讀 2339

這個命令之前沒有用過,在網上查了一下資料,覺得人家寫的很好,所以複製過來了。

語法:eval cmdline

eval會對後面的cmdline進行兩遍掃瞄,如果在第一遍掃面後cmdline是乙個普通命令,則執行此命令;如果cmdline中含有變數的間接引用,則保證簡介引用的語義。

舉例如下:

set 11 22 33 44

如果要輸出最近乙個引數,即44,可以使用如下命令,

echo $4

但是如果我們不知道是幾個引數的時候,要輸出最後乙個引數,大家可能會想到使用$#來輸出最後乙個引數,

如果使用命令:

echo "\$$#"

則得到的結果是$4,而不是我們想要的44.這裡涉及到乙個變數簡介引用的問題,我們的本意是輸出$4,預設情況下,命令後忽略變數簡介引用的情況。

這時候,就可以使用eval命令。

eval echo "\$$#"

得到結果為44.

這個命令之前沒有用過,在網上查了一下資料,覺得人家寫的很好,所以複製過來了。

語法:eval cmdline

eval會對後面的cmdline進行兩遍掃瞄,如果在第一遍掃面後cmdline是乙個普通命令,則執行此命令;如果cmdline中含有變數的間接引用,則保證簡介引用的語義。

舉例如下:

set 11 22 33 44

如果要輸出最近乙個引數,即44,可以使用如下命令,

echo $4

但是如果我們不知道是幾個引數的時候,要輸出最後乙個引數,大家可能會想到使用$#來輸出最後乙個引數,

如果使用命令:

echo "\$$#"

則得到的結果是$4,而不是我們想要的44.這裡涉及到乙個變數簡介引用的問題,我們的本意是輸出$4,預設情況下,命令後忽略變數簡介引用的情況。

這時候,就可以使用eval命令。

eval echo "\$$#"

得到結果為44.

linux命令eval的用法

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

linux命令eval的用法

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

PyTorch裡eval和no grad的關係

首先這兩者有著本質上區別。model.eval 是用來告知model內的各個layer採取eval模式工作。這個操作主要是應對諸如dropout和batchnorm這些在訓練模式下需要採取不同操作的特殊layer。訓練和測試的時候都可以開啟。torch.no grad 則是告知自動求導引擎不要進行求...