如果我运行这样的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)
答案 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'