La programare,pentru fiecare comandă implementează o buclă în cazul în care variabilele bucla presupun valorile dintr-una sau mai multe liste. În cel mai simplu caz, există o variabilă de buclă, varname , și o listă, listă , aceasta este o listă de valori pe care trebuie să le atribuiți varname . corp argument este un script Tcl. Pentru fiecare element al lui listă (în ordine de la primul la ultimul)pentru fiecare atribuie conținutul elementului la varname ca în cazul în carelindexa fost folosit pentru a extrage elementul, apoi apelează interpretul Tcl pentru a executa corp .
Rezumat
pentru fiecare corp corp larname
pentru fiecare varlist1 list1 ? varlist2 list2 … ? corp
Discuţie
Într-un caz general, pot exista mai multe liste de valori (de exemplu, List1 și Lista2 ), iar fiecare listă de valori poate fi asociată cu o listă de variabile de buclă (de exemplu, varlist1 și varlist2 ). În fiecare iterație a buclă, variabilele fiecărei varlist sunt atribuite valori consecutive de la valoarea corespunzătoare listă . Valori în 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ă.
pauză șicontinua declarațiile pot fi invocate în interior corp , cu același efect ca și în pentru comanda. Foreach returnează un șir gol.
Exemple
Se folosește următoarea buclă eu și j ca variabile de buclă pentru a itera peste perechi de elemente dintr-o singură listă.
setul x {} foreach {i j} {a b c d e f} {lappend x $ j $ i} # Valoarea lui x este "b a d c f e" # Există 3 iterații ale buclei.
Se folosește următoarea buclă eu și j pentru a repeta în două liste în paralel.
setul x {} foreach i {a b c} j {d e f g} {lappend x $ i $ j} # Valoarea lui x este "a d b e c f {} g" # Există 4 iterații ale buclei.
Cele două forme sunt combinate în exemplul următor.
setul x {} foreach i {a b c} {j k} {d e f g} {lappend x $ i $ j $ k} # Valoarea lui x este "a d e b f g c {} {}" # Există 3 iterații ale buclei.
notițe
Mai multe comenzi cu care lucrațipentru fiecare inclusiv:
- pentru (n)
- în timp ce (n)
- pauză (n)
- continua (n)
Deoarece distribuția Linux și nivelurile de eliberare a kernelului variază, utilizați om comandă ( % om ) pentru a vedea cum este utilizată în mod specific o comandă pe computerul dvs. particular.




