2016-03-17 62 views
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的)

回答

5

$x得到由當前shell來解釋,而不是sh外殼就是你」重新開始。

用反斜槓轉義:

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

或者使用單引號,以防止shell解釋變量:

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

大如預期那樣的工作! – TobiSH

+0

如果它適合你,那麼請接受答案,以便它可以關閉。謝謝 – Utsav

+0

@Utsav:我需要等10分鐘才能接受它(這對我來說實際上是新的,但大多數答案並不容易驗證,因此我從未遇到過這種限制)。 – TobiSH

相關問題