回答:
{ ...; }
70年代後半のUnix V7のBourneシェルの最初のバージョンではdo ...; done
、for
ループの代わりに既に受け入れられていました(ソースコードを参照)が、私の知る限り文書化されていません。
すべてksh
(Bourneシェルから派生した元のものとksh93の書き換えの両方)、pdksh
¹(および派生物)、bash
(1989年の初めから)、およびzsh
それをサポートします。ash
派生するものは知りません。yash
どちらでもありませんがyash
、POSIX標準に書かれています。
でzsh
、サポートは1991年に2.0で追加されたが、ボーンの構文を超えて、ほとんどの構築物についての短い形式の新しい範囲の一部として。それだけでなくfor i in 1 2; { ...; }
、それfor i in 1 2; any-command
(およびその変形)です。そして、それが文書化されてそことその導入以来の。
私の知る限り、横にzsh
(両方のための、唯一のpdkshの文書、それをfor
してselect
)。
((init; condition; action))
来て、フォーム、ksh93
およびコピーされたzsh
とbash
。
それ((...))
も、{ ...; }
代わりにdo ...; done
POSIX もありません。
参照してくださいループのバッシュで「やる」というキーワードの目的は何ですか?より多くのfor
ループ形式のため。
¹以前のバージョンや、それが基づいているForsythシェルではありません。1994年に5.1.1で追加され、おそらくそこに文書化された理由を説明しています