我有一個簡單的bash腳本,它可以接受它將被視爲文本字符串的參數,僅此而已。Bash腳本檢查代字號'〜'是否是參數
如果我給它~
,沒有引號,那麼主目錄/home/users/me
就是解析的內容。引用它,"~"
,沒關係。字符「〜」是我想要的,而不是家鄉的道路。
有沒有什麼方法可以確保將未加引號的~
嚴格視爲字符「〜」,而不是主目錄別名?
我有一個簡單的bash腳本,它可以接受它將被視爲文本字符串的參數,僅此而已。Bash腳本檢查代字號'〜'是否是參數
如果我給它~
,沒有引號,那麼主目錄/home/users/me
就是解析的內容。引用它,"~"
,沒關係。字符「〜」是我想要的,而不是家鄉的道路。
有沒有什麼方法可以確保將未加引號的~
嚴格視爲字符「〜」,而不是主目錄別名?
在參數傳遞給腳本之前,bash shell正在命令行上擴展~
。
There 可能是一個bash選項,您可以在shell中進行更改,但這會影響shell中的所有內容,而這聽起來並不像您想要的那樣。
簡短的回答我認爲是不。在腳本中沒有任何東西可以改變父shell在將它們傳遞給腳本之前擴展任何參數的方式。
我沒有看到任何店鋪禁用'〜'擴展。 https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html –
謝謝。儘可能多地思考。 –
不,它在您的腳本看到它之前由shell解釋。 – 123
代字號擴展正在由shell執行,而不是由腳本執行。您還可以通過在反斜槓之前加前綴來禁用代字符擴展。 – ghoti
爲什麼你需要這樣做有什麼特別的原因嗎?你不能引用或轉義你的命令行參數嗎? –