ファイルを作成するとします~/myScript.sh
。
#!/bin/sh
for myVar; do
echo "Hi"
done
引数なしで実行するとbash myScript
何も得られませんが、1つ以上の引数を使用して実行すると、これらの変数の数に応じて出力が得られます(変数は渡された引数にスクリプトを依存させるようです)。
bash ~/myScript.sh arg0 arg1
未定義の変数に基づくforループは、それ自体にmyVar
適用され(誤って表現された場合は申し訳ありません)、次の出力を取得します。arg0
arg1
こんにちは
こんにちは
(パラメータごとに1つの「hi」)
最初は、ループが1つのパラメータとして機能すると仮定しました。したがって、andfor
があり、andがある場合、andは機能しますが、追加のテストを試してみました。すべてのループはすべてのパラメータで機能します。myVar_0
myVar_1
arg0
arg1
myVar_0
arg_0
myVar_1
arg1
for
#!/bin/sh
for myVar_0; do
echo "Hi"
done
for myVar_1; do
echo "Hello"
done
返されますbash myScript arg0 arg1
:
こんにちは
こんにちは
こんにちは
こんにちは
注:「forループごとに1つの引数」が必要な場合は、ローカルスコープでBash関数を使用する必要があるとします。
私の質問
Bashに一致する「すべてのforループのすべてのパラメータ」の名前は何ですか?
ベストアンサー1
myVar
位置引数を使用してスクリプトを呼び出す場合は、未定義です。メンズバッシュから:
For the name [ [ in [ word... ] ] ] list of things to do; done
[...] in 単語を省略すると、for コマンドは各位置パラメーター・セットに対してリストを 1 回実行します。
しかし、あなたはそれを使用しません$myVar
。
for myVar; do
echo "$myVar"
done