回答:
{ ...; }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 ...; donePOSIX もありません。
参照してくださいループのバッシュで「やる」というキーワードの目的は何ですか?より多くのforループ形式のため。
¹以前のバージョンや、それが基づいているForsythシェルではありません。1994年に5.1.1で追加され、おそらくそこに文書化された理由を説明しています