表現:
$ ksh -c 'for ((i=0;i<10;i++)){ echo $i;}'
0
1
2
3
4
うまくいきます。
置き換えられるマニュアルには、この構文の説明が見つかりません{...;}
。; do ...; done
マニュアルに注意事項がありますか?どのシェルで動作しますか?
ベストアンサー1
{ ...; }
すでに1970年代後半に、Unix V7のBourneシェルの最初のバージョンでは、do ...; done
ループ内の交換が許可されています(参照:for
ソースコード)私が知っている限り、それは録音されたことがありません。
すべてksh
(Bourneシェルから派生した元のバージョンとksh93書き換え)、pdksh
1(およびその派生)、bash
(1989年以降)zsh
をサポートします。私はash
これを行うデリバティブを知りません。yash
いいえ、しかしyash
POSIX標準に従って書かれています。
サポートは1991年zsh
2.0に追加されましたが、Bourne文法を超えて、ほとんどの構文のための一連の新しい短い形式の一部でした。だけでなく、それは(そしてその変形)for i in 1 2; { ...; }
です。for i in 1 2; any-command
記録もありますそこそしてリリース後。
AFAIKはpdkshを除いて、zsh
pdkshだけがこれを文書化しました(およびfor
)select
。
形式は((init; condition; action))
andに由来し、ksh93
andによってコピーされます。zsh
bash
それ((...))
も{ ...; }
代替もdo ...; done
POSIXではありません。
また、見ることができますBash for ループで「do」キーワードの目的は何ですか?もっと円形for
。
¹以前のバージョンではなく、基盤となるForsythシェルでもありません。 1994年に5.1.1に追加されましたが、おそらくそこに文書化されている理由が説明されます。