0

私は次のようなbash関数を持っています:

foo() {
    echo $1
}

また

bar() {
    baz $1
}

次に呼び出すとfoo 'file[1-3]'、結果はfile1 file2 file3ではなく、になりfile[1-3]ます。関数のように別のbash関数の呼び出しにパラメーターを渡すと、同様の現象が発生しますbar。パラメータをエコーし​​たり別の関数に渡したりするときにパラメータを参照できるように、現在のディレクトリに一致するファイルがないことを確認する以外に、これを回避する最も簡単な方法は何ですか?

編集:文字列照合はグロブを拡張しないようです。別の関数への内部呼び出しで文字列の一致を実行すると、特定の問題が発生しました。パターンを拡張したように見えるのは、他の関数の呼び出しでした。

4

2 に答える 2

2

これをスクリプトの先頭に挿入します。

set -o noglob
于 2012-10-25T23:07:22.213 に答える
1

$1を二重引用符で囲みます。

echo "$1"

グロブ/ファイル名の拡張は二重引用符で囲まれていないためです。

于 2012-10-25T23:18:07.227 に答える