Bash

如何防止 bash 轉換參數?

  • January 15, 2016

我正在嘗試使用腳本的參數來查找其他文件。問題是,當我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如果你願意,你可以重新打開它。

引用自:https://unix.stackexchange.com/questions/255409