Iteratori de listă de construcție cu comanda Linux "foreach"

La programare , comanda foreach implementează o buclă în cazul în care variabilele bucla presupun valorile din una sau mai multe liste. În cel mai simplu caz există o variabilă buclă, varname și o listă, o listă , care este o listă de valori pe care trebuie să o atribuiți varnamei . Argumentul corpului este un script Tcl. Pentru fiecare element al listei (în ordinea de la primul la ultimul), foreach atribuie conținutul elementului la varname ca și cum comanda lindex ar fi fost folosită pentru a extrage elementul, apoi apelează interpretul Tcl pentru a executa corpul .

Rezumat

foreach corpul listei varname
forelist varlist1 list1 ? varlist2 list2 ... ? corp

Discuţie

Într-un caz general, pot exista mai multe liste de valori (de exemplu, lista1 și lista2 ), iar fiecare listă de valori poate fi asociată cu o listă de variabile de buclă (de exemplu, varlist1 și varlist2 ). În timpul fiecărei iterații a buclei, variabilele fiecărei variante sunt atribuite valori consecutive din lista corespunzătoare. Valorile din fiecare listă sunt utilizate în ordine de la primul la ultimul și fiecare valoare este utilizată exact o dată. Numărul total de iterații ale buclă este suficient de mare pentru a utiliza toate valorile din toate listele de valori. Dacă o listă de valori nu conține suficiente elemente pentru fiecare dintre variabilele sale de buclă în fiecare iterație, valorile goale sunt utilizate pentru elementele lipsă.

Declarațiile de întrerupere și de continuare pot fi invocate în interiorul corpului , cu același efect ca în comanda for . F orachul returnează un șir gol.

Exemple

Următoarea buclă utilizează i și j ca variabile de buclă pentru a itera peste perechi de elemente dintr-o singură listă.

set x {} foreach {ij} {abcdef} {lappend x $ j $ i} # Valoarea lui x este "badcfe" # Există 3 iterații ale bucla.

Următoarea buclă utilizează i și j pentru a repeta în două liste în paralel.

set x {} foreach i {abc} j {defg} {lappend x $ i $ j} # Valoarea lui x este "adbecf {} g" # Sunt 4 iterații ale buclei.

Cele două forme sunt combinate în exemplul următor.

set x {} foreach i {abc} {jk} {defg} {lappend x $ i $ j $ k} # Valoarea lui x este "adebfgc {} {}" # Există 3 iterații ale buclei.

notițe

Câteva comenzi înrudite lucrează cu foreach, inclusiv:

Deoarece distribuția distribuției Linux și nivelurile de eliberare a kernelului variază, utilizați comanda om ( % man ) pentru a vedea cum este utilizată în mod specific o comandă pe computerul dvs. particular.