【发布时间】:2013-11-13 09:09:56
【问题描述】:
我在 bash 中执行了一个需要环境变量的命令。如果我这样称呼它,一切正常:
export MYVAR=value & my_first_command
但现在我想将结果通过管道传递给第二个命令,该命令需要相同的环境变量。我试过这个:
export MYVAR=value & my_first_command | my_second_command
在这种情况下,MYVAR 似乎没有设置为my_second_command。使MYVAR 也可用于my_second_command 的正确语法是什么?
【问题讨论】:
-
export 应该使 MYVAR 可用于所有子进程。 FWIW,你有一个错字,如果前面的命令成功,请尝试
export MYVAR=value && my_first_command执行my_first_command。 -
我什至不明白第一次尝试是如何工作的。使用
&,变量应该只在它的无操作子shell中导出,而不是my_first_command。 -
export MYVAR=value ; my_first_command ; my_second_command有什么问题? -
@slayedbylucifer 在这种情况下,我认为它可以工作。因为它只是命令序列,其中 ';'充当 cmd 分隔符。带“|”它不会按照上面的原始问题陈述工作
-
Scope在这里不是很正确的概念。这意味着MYVAR没有在子级中定义,但它可以以某种方式查看父级以查看是否在其中定义了MYVAR。相反,子级在开始时会获得自己的MYVAR副本,即使父级在子级仍在运行时更改其MYVAR的值也不受影响。
标签: bash shell environment-variables