Est pour ((…)) {…;} une syntaxe shell valide? Dans quels coquillages?


Réponses:


30

{ ...; }a déjà été accepté à la place do ...; doneen forboucles dans la première version du shell Bourne dans Unix V7 à la fin des années 70 (voir le code source ) mais jamais documenté autant que je sache.

Tous ksh(à la fois l'original dérivé du shell Bourne et la réécriture ksh93), pdksh¹ (et dérivés), bash(depuis le début en 1989) et le zshsoutiennent. Je ne connais aucun ashdérivé qui le fasse. yashnon plus, mais a yashété écrit au standard POSIX.

Dans zsh, le support a été ajouté avec 2.0 en 1991, mais dans le cadre d'une nouvelle gamme de formes courtes pour la plupart des constructions qui va au-delà de la syntaxe Bourne. Ce n'est pas seulement for i in 1 2; { ...; }, c'est for i in 1 2; any-command(et ses variantes). Et il est documenté là - bas et a été depuis son introduction .

AFAIK, à côté zsh, seul pdksh le documente (pour les deux foret select).

Quant au ((init; condition; action))formulaire, il provient de ksh93et a été copié par zshet bash.

Ni cela ((...))ni la { ...; }place de ne do ...; donesont POSIX.

Voir aussi À quoi sert le mot-clé "do" dans Bash pour les boucles? pour plus de forformes de boucle.


¹ pas les versions antérieures, ni le shell Forsyth sur lequel il est basé. Il a été ajouté en 5.1.1 en 1994 et cela explique probablement pourquoi il y a été documenté


1
Wow, M. Bourne a pleinement adopté l'utilisation du préprocesseur c dans ce code source des années 70.
— Digital Trauma
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.