将自定义环境变量传递给 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
我怎样才能使下面的代码工作?我想将 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