将自定义环境变量传递给 nohup

pass custom env variable to nohup

我怎样才能使下面的代码工作?我想将 custom_var 值传递给 command 脚本。

$ command="echo $custom_var"
$ custom_var=myValue nohup $command > log.txt && cat log.txt 
$ # WRONG. Should be 'myValue'

This 似乎不起作用。上面的输出应该打印 "myValue"。也试过:

$ command="echo $custom_var"
$ custom_var=myValue nohup $command > log.txt && cat log.txt 
$ $custom_var # WRONG. Should be 'myValue'

谢谢

你犯了两个错误。第一个是这个语法

var=val some_command

创建一个仅对 some_command 可见的临时导出变量。该语句完成后它将不存在。因此,您随后对 custom_var 的使用将具有该语句之前的任何值(如果有的话) 运行.

第二个错误是您不了解 POSIX 1003 shells 如何进行变量扩展,也不了解环境变量与非环境变量的区别。 custom_var 被传递给 "the command script." 问题是您试图验证是否需要父 shell,即您在其中 运行 执行这些命令的那个,来执行变量扩展。试试这个。使用以下内容创建名为 /tmp/cvar 的文件:

echo custom_var is $custom_var
env | grep custom_var

然后输入

custom_var=myValue sh /tmp/cvar