您可以为单个命令设置变量,如下所示:
MY_VARIABLE=my_value ./my_script.sh
Run Code Online (Sandbox Code Playgroud)
你可以交给另一个这样的脚本:
exec ./my_script.sh
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这样做时:
exec MY_VARIABLE=my_value ./my_script.sh
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
exec: MY_VARIABLE=my_value: not found
Run Code Online (Sandbox Code Playgroud)
这是为什么?
有没有办法做到这一点?
dev*_*ull 46
您需要使用env来指定环境变量:
exec env MY_VARIABLE=my_value ./my_script.sh
Run Code Online (Sandbox Code Playgroud)
如果希望脚本以空环境或仅使用指定变量开头,请使用该-i选项.
来自man env:
env - run a program in a modified environment
Run Code Online (Sandbox Code Playgroud)
在bash中,可以通过将分配放在命令的开头来为命令设置环境变量。这exec与任何其他命令的工作原理相同,因此您可以编写:
MYVARIABLE=my_value exec ./my_script.sh
Run Code Online (Sandbox Code Playgroud)