これはbashで有効な「forループ」ですか?

これはbashで有効な「forループ」ですか?

forループについて学んでいますが、bashオンラインで次の例を見つけました。

for i in 1 2 3 4 5
do
    echo $i
done

私は1 2 3 4 5多くの「モノ」(数字、文字列、変数など)に置き換えました。

myVar="!!"
myVar2="Bye"
for i in 3 15 1 32 6 "Hello World $myVar" 'Hello World in single quotes' Hi $myVar2 $(ls)
do
    echo $i
done

上記のコードでスクリプトを実行すると、期待どおりに機能します。しかし、これらすべての「材料」を一緒に混ぜることは何とか効果がありませんか?

答え1

ループに提供する引数のリストが有効な文字列(またはシェルによって拡張される可能性がある)であると仮定すると、つまり、すべてのシェル拡張の正しい構文を取得すると、実際に制限はなく、すべてが行われます。

引数リストが展開されると、bashはそれをループに供給し、ループ内のコードが実行されるようにします。

これは良い習慣ではなく、コードを理解するのが難しくなりますが、それ自体は「無効」ではありません。

関連情報