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.