配列仮想問題のループのBashスクリプト

配列仮想問題のループのBashスクリプト

本当に愚かな質問がありますが、確かに確認したかったです。また、次のコードを使用して内部でテストしました。

for x in ${!test_array[@]} 
do
    echo hey
done

だから私の質問は、明らかにfor配列が空の場合、ループは「実行中」と「完了」の間のすべての項目を無視することです。テストしましたが、配列が空の場合はecho hey実行されません。つまり、スクリプトはdo ..内部で何もし​​ませんdone。配列に1つ以上の要素がある場合は、配列が実行されますecho hey

私の理解が正しいことを確認したいと思います。私のテストによると、確かにそうです。

答え1

あなたの理解は正しいです。 forループはdoとの間のコードを実行します。done ~のためすべてのアイテム性格。中に何もない場合性格それでは循環することはありません。

しかし省略するとマロ全体的に位置パラメータを介して繰り返されます。

例えば

$ set -- one two
$ for f; do echo $f; done
one
two

バラより3.2.5.1 ループ構造

答え2

はい、そうです。こう考えてみてください。あなたが子供パーティーにいて、青いシャツを着たすべての子供たちがクッキーを受け取る必要があると私が言った場合、青いシャツを着た子供がいない場合、あなたは絶対にクッキーボトルを開けないでしょう。

ここでは、配列の各要素に対して何かを行うようにシェルに指示します。要素がないのでループに入ることもありません。

関連情報