Bash:未定義変数ごとに1つの引数

Bash:未定義変数ごとに1つの引数

ファイルを作成するとします~/myScript.sh

#!/bin/sh

for myVar; do
    echo "Hi"
done

引数なしで実行するとbash myScript何も得られませんが、1つ以上の引数を使用して実行すると、これらの変数の数に応じて出力が得られます(変数は渡された引数にスクリプトを依存させるようです)

bash ~/myScript.sh arg0 arg1

未定義の変数に基づくforループは、それ自体にmyVar適用され(誤って表現された場合は申し訳ありません)、次の出力を取得します。arg0arg1

こんにちは

こんにちは

(パラメータごとに1つの「hi」)


最初は、ループが1つのパラメータとして機能すると仮定しました。したがって、andforがあり、andがある場合、andは機能しますが、追加のテストを試してみました。すべてのループはすべてのパラメータで機能します。myVar_0myVar_1arg0arg1myVar_0arg_0myVar_1arg1for

#!/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

おすすめ記事