Czy dla ((…)) {…;} poprawna składnia powłoki? W jakich muszlach?


Odpowiedzi:


30

{ ...; }został już zaakceptowany zamiast do ...; donew forpętlach w pierwszej wersji powłoki Bourne'a w Unixie V7 pod koniec lat 70. (patrz kod źródłowy ), chociaż nigdy nie udokumentowano o ile wiem.

Wszystkie ksh(zarówno oryginalne, pochodzące z powłoki Bourne'a, jak i przepisane przez ksh93), pdksh¹ (i pochodne) bash(od początku w 1989 r.) I zshobsługują to. Nie znam żadnej ashtakiej pochodnej. yashteż nie, ale yashzostał napisany do standardu POSIX.

W zsh1991 r. Dodano obsługę wersji 2.0 w wersji 2.0, ale jako część nowej gamy krótkich form dla większości konstrukcji, która wykracza poza składnię Bourne'a. To nie tylko for i in 1 2; { ...; }, to for i in 1 2; any-command(i jego warianty). I jest tam udokumentowane i było od jego wprowadzenia .

AFAIK oprócz tego zshdokumentuje tylko pdksh (zarówno dla, jak fori dla select).

Jeśli chodzi o ((init; condition; action))formularz, który pochodzi ksh93i został skopiowany przez zshi bash.

Ani to, ((...))ani { ...; }miejsce zamiast do ...; donePOSIX.

Zobacz także Jaki jest cel słowa kluczowego „do” w Bash dla pętli? więcej forform pętli.


¹ nie wcześniejsze wersje ani powłoka Forsyth, na której jest oparta. Został dodany w 5.1.1 w 1994 roku i prawdopodobnie wyjaśnia, dlaczego został tam udokumentowany


1
Wow, pan Bourne w pełni przyjął zastosowanie preprocesora c w kodzie źródłowym z lat 70.
Cyfrowa trauma
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.