Bash
如何防止 bash 轉換參數?
我正在嘗試使用腳本的參數來查找其他文件。問題是,當我
x.*
在命令行中為腳本提供參數時,它會轉換為x.sh
. 有什麼想法可以讓我了解x.*
我的腳本嗎?命令行中的腳本:
./script.sh x.*
。如果我嘗試列印$1
它輸出x.sh
。
您不能從腳本內部執行此操作。
*
必須被轉義,否則它將嘗試適合文件名(在你的情況下x.
,然後是任何東西,就像*
匹配文件名中任何字元串的 glob 運算符一樣)。基本上,您可以通過三種方式執行此操作 - 用單引號或雙引號將您的字元串括起來:./script.sh "x.*" ./script.sh 'x.*'
或者在有問題的字元前加上反斜杠:
./script.sh x.\*
正如 Jeff 在評論中提到的(謝謝),您還可以使用以下命令禁用全域擴展:
set -o noglob
set +o noglob
如果你願意,你可以重新打開它。