これはバグか機能ですか?
これが起こると思います。引用しない文字と数字。
GNU bash バージョン 4.1.5 の実行
for alpha01234; do echo $((++i)); done
出力:
1
2
3
4
答え1
for
これは、以下に説明する複合コマンドの機能ですhelp for
。
for: for NAME [in WORDS ... ] ; do COMMANDS; done
リストの各メンバーに対してコマンドを実行します。
この
for
ループは、プロジェクトリストの各メンバーに対して一連のコマンドを実行します。in WORDS ...;
存在しない場合はin "$@"
想定されます。の各要素に対してその要素を設定しWORDS
たNAME
後にCOMMANDS
実行します。
したがって、引用符付きコードは、4つのパラメータで呼び出されるスクリプトで実行できます。
答え2
for x; do …
例ショートカットfor x in "$@"; do …
:位置パラメータを繰り返します。 4回繰り返すと、4つの位置引数($1
to $4
)があるという意味です。