为什么命令模式下的shell(sh)变量未导出?

时间:2016-03-17 12:15:47

标签: linux shell sh

如果我运行这样的shell命令,则导出的变量不可见。

sh -c "export x=100; echo x is $x"

我希望它输出“x是100”,但它只是说“x是”。如果我运行它是在交互模式下,它就像预期的那样工作。

我的shell版本是:GNU bash,版本3.2.51(1)-release(x86_64-suse-linux-gnu)

1 个答案:

答案 0 :(得分:5)

$x由当前shell解释,而不是您正在启动的sh shell。

用反斜杠逃脱:

sh -c "export x=100; echo x is \$x"

或使用单引号来阻止shell解释变量:

sh -c 'export x=100; echo x is $x'