Dlaczego ”dla dowolnego tekstu; robić pętlę cztery razy?


9

Czy to błąd, czy funkcja?
Wydaje się, że dzieje się tak w przypadku niecytowanych alfanumerycznych.

Uruchamianie GNU bash, wersja 4.1.5

for alpha01234; do echo $((++i)); done

wynik:

1
2
3
4

Odpowiedzi:


14

Jest to cecha forpolecenia złożonego, opisana przez help for:

for: for NAME [in WORDS ... ] ; do COMMANDS; done

Wykonuj polecenia dla każdego członka na liście.

forPętla wykonuje sekwencję poleceń dla każdego członka na liście elementów. Jeśli in WORDS ...;nie jest obecny, in "$@"zakłada się. Dla każdego elementu WORDS, NAMEjest ustawiony na ten element, a COMMANDSsą wykonywane.

Więc cytowany kod jest prawdopodobnie wykonywany w skrypcie, który został wywołany z 4 parametrami.


Dzięki ... Rzeczą, która mnie całkowicie rzuciła, było to, że stało się to w wierszu poleceń .. Właściwie to nie próbowałem tego w skrypcie .. Musiałem użyć set a b c djakiś czas temu. Często używam settego w skrypcie do testowania. Po ponownym uruchomieniu terminalu przestał
działać

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.