我需要將字符串參數傳遞給可能包含$字符的bash腳本。我不想強制將\插入腳本之外的字符串中。
我試圖在腳本中做到這一點,但無法弄清楚如何做到這一點。
我在稍後的腳本中使用「read」讀取字符串時遇到了類似的問題。我只能通過強制用戶輸入\ $來實現它,而這對我的應用程序來說不起作用。
有什麼建議嗎?
我需要將字符串參數傳遞給可能包含$字符的bash腳本。我不想強制將\插入腳本之外的字符串中。
我試圖在腳本中做到這一點,但無法弄清楚如何做到這一點。
我在稍後的腳本中使用「read」讀取字符串時遇到了類似的問題。我只能通過強制用戶輸入\ $來實現它,而這對我的應用程序來說不起作用。
有什麼建議嗎?
如果您不想使用反斜槓來轉義$
,那麼唯一的另一種選擇是圍繞單引號中的參數。無法將「裸體」$
傳遞到您的腳本中,因爲shell會嘗試擴展它。使用單引號可防止shell擴展,並將保留$
。
例如:
myscript.sh '$foo'
只是爲了澄清:「不可能傳遞裸$,因爲shell會擴展它」的真正含義是,父shell(在哪裏運行腳本並提供參數)將執行擴展。你的腳本(運行在一個單獨的shell中,可能與父shell不同)永遠不會看到$ args。 –
感謝您的反饋。所以要使用這種技術,我想我會在另一個shell類型中編寫一個不會擴展$的小型父腳本,然後用'字符串附近的字符來調用我的bash腳本。我會給你一個鏡頭。 – user1904074
請解釋一下,或給如何'yourscript.sh'運行,如何參數傳遞一些樣品和哪種形式。 –