2
如果我運行這樣的shell命令,我的導出變量不可見。爲什麼我的shell(sh)在命令模式下變量不能導出?
sh -c "export x=100; echo x is $x"
我期望它輸出「x是100」,但它只是說「x是」。如果我運行這個交互模式,它就像預期的那樣工作。
我外殼的版本是:GNU bash中,版本51年3月2日(1)-release下(x86_64-SUSE Linux的GNU的)
如果我運行這樣的shell命令,我的導出變量不可見。爲什麼我的shell(sh)在命令模式下變量不能導出?
sh -c "export x=100; echo x is $x"
我期望它輸出「x是100」,但它只是說「x是」。如果我運行這個交互模式,它就像預期的那樣工作。
我外殼的版本是:GNU bash中,版本51年3月2日(1)-release下(x86_64-SUSE Linux的GNU的)
的$x
得到由當前shell來解釋,而不是sh
外殼就是你」重新開始。
用反斜槓轉義:
sh -c "export x=100; echo x is \$x"
或者使用單引號,以防止shell解釋變量:
sh -c 'export x=100; echo x is $x'
大如預期那樣的工作! – TobiSH
如果它適合你,那麼請接受答案,以便它可以關閉。謝謝 – Utsav
@Utsav:我需要等10分鐘才能接受它(這對我來說實際上是新的,但大多數答案並不容易驗證,因此我從未遇到過這種限制)。 – TobiSH