【发布时间】:2016-03-17 12:15:47
【问题描述】:
如果我运行这样的 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)
【问题讨论】:
如果我运行这样的 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)
【问题讨论】:
$x 被当前 shell 解释,而不是你正在启动的 sh shell。
用反斜杠转义:
sh -c "export x=100; echo x is \$x"
或者使用单引号来防止shell解释变量:
sh -c 'export x=100; echo x is $x'
【讨论】: