2012-12-14 83 views
1

我需要將字符串參數傳遞給可能包含$字符的bash腳本。我不想強制將\插入腳本之外的字符串中。

我試圖在腳本中做到這一點,但無法弄清楚如何做到這一點。

我在稍後的腳本中使用「read」讀取字符串時遇到了類似的問題。我只能通過強制用戶輸入\ $來實現它,而這對我的應用程序來說不起作用。

有什麼建議嗎?

+0

請解釋一下,或給如何'yourscript.sh'運行,如何參數傳遞一些樣品和哪種形式。 –

回答

3

如果您不想使用反斜槓來轉義$,那麼唯一的另一種選擇是圍繞單引號中的參數。無法將「裸體」$傳遞到您的腳本中,因爲shell會嘗試擴展它。使用單引號可防止shell擴展,並將保留$

例如:

myscript.sh '$foo' 
+0

只是爲了澄清:「不可能傳遞裸$,因爲shell會擴展它」的真正含義是,父shell(在哪裏運行腳本並提供參數)將執行擴展。你的腳本(運行在一個單獨的shell中,可能與父shell不同)永遠不會看到$ args。 –

+0

感謝您的反饋。所以要使用這種技術,我想我會在另一個shell類型中編寫一個不會擴展$的小型父腳本,然後用'字符串附近的字符來調用我的bash腳本。我會給你一個鏡頭。 – user1904074