2014-04-04 160 views
8

你可以設置一個變量爲一個命令是這樣的:以exec猛砸組變量

MY_VARIABLE=my_value ./my_script.sh 

可以交給另一個這樣的腳本:

exec ./my_script.sh 

但是,當我嘗試做既像這樣:

exec MY_VARIABLE=my_value ./my_script.sh 

我得到一個錯誤:

exec: MY_VARIABLE=my_value: not found 

這是爲什麼?
有沒有辦法做到這一點?

回答

23

您需要使用env指定環境變量:

exec env MY_VARIABLE=my_value ./my_script.sh 

如果你希望你的腳本與一個空的環境或只使用指定的變量開始,使用-i選項。

man env

env - run a program in a modified environment 
1

在bash中,你可以通過將分配在命令的開頭設置環境變量的命令。此作品同爲exec其他任何命令,所以你寫:

​​
+2

關於「EXEC ENV」的好處是,你可以使用它可能會或可能不會設置shell變量的變量。例如,如果我有一個腳本爲一個任意命令做了一些設置,我可以用'exec env「$ @」'結束它,無論「$ @」是否設置變量,它都會起作用。要使用這個解決方案,我必須解析並分解「$ @」中的參數。 – Ken