2012-04-01 138 views
8

無可否認,我是一名bash初學者。我總是希望爲了我的shell腳本目的達到Python。不過,我試圖強迫自己學習一些bash。我很好奇爲什麼下面的代碼不起作用。內聯bash腳本變量

sh -c "F=\"123\"; echo $F" 

回答

13

它不工作,因爲在雙引號字符串變量展開發生之前被稱爲命令。也就是說,如果我輸入:

echo "$HOME" 

外殼轉變成這樣:

echo "/home/lars" 

前實際調用echo命令。同樣,如果您鍵入:

sh -c "F=\"123\"; echo $F" 

這被轉化爲:

sh -c "F=\"123\"; echo" 

調用的sh命令之前。您可以使用單引號來抑制變量擴展,例如:

sh -c 'F="123"; echo $F' 

您也可以用反斜槓逃脫$

sh -c "F=\"123\"; echo \$F" 
+0

另外,如果你想學習'bash',花一些高質量的時間用'bash'手冊頁,還有[#bash faq](http://mywiki.wooledge.org/BashFAQ)。 – larsks 2012-04-01 01:06:12

+0

另外,請注意,在單引號中,不需要反斜槓 - 引號:''F =「123」''而不是''F = \「123 \」'''。 – larsks 2012-04-01 01:07:45

+0

謝謝!完全意義。這些小細節帶來了很大的變化。 :-) – Daniel 2012-04-01 01:30:55