次のスクリプトがありますmy.sh
。
echo $@
これでファイルのグローバル拡張を見たいので、これが好きでうまくいきます。
$ bash my.sh *
$ f1 f2 my.sh
次に、次に説明する技術を使用して拡張を抑制しようとしています。この回答:
$ bash my.sh "*"
$ bash my.sh \*
ただし、すべてのファイルの一覧が出力されます。なぜ?
ベストアンサー1
スクリプトが最初に呼び出されたとき
$ bash my.sh *
ファイル名のグロービングは、スクリプトを呼び出す前にシェルで実行されます。
2番目にスクリプトを呼び出すとき
$ bash my.sh "*"
ファイル名のグロービングは、実行時にスクリプトで行われますecho $@
。
これを防ぐには、$@
行の周りに二重引用符を入れてください。
echo "$@"