Skip to main content

Build List Iterators Med Linux "Foreach" Command

Designing a Race Car with Open Source Tools (Maj 2025)

Designing a Race Car with Open Source Tools (Maj 2025)
Anonim

Vid programmering,för varje kommandot implementerar en slinga där slingvariablerna antar värdena från en eller flera listor. I det enklaste fallet finns en slingvariabel, varName , och en lista, lista , det är en lista över värden att tilldela till varName . De kropp argumentet är ett Tcl-skript. För varje element i lista (i ordning från första till sista)för varje tilldelar elementets innehåll till varName som omlindexkommandot hade använts för att extrahera elementet, då kallas Tcl-tolken att utföra kropp .

Synopsis

för varje varnamnslista kropp

för varje varlist1 lista1 ? varlist2 list2 … ? kropp

Diskussion

I ett allmänt fall kan det finnas mer än en värde lista (t.ex. lista1 och lista2 ) och varje värdelista kan associeras med en lista över loop-variabler (t.ex. varlist1 och varlist2 ). Under varje iteration av slingan, variablerna för varje varlist tilldelas konsekutiva värden från motsvarande lista . Värden i varje lista används i ordning från första till sista, och varje värde används exakt en gång. Det totala antalet loop-iterationer är tillräckligt stort för att använda alla värden från alla värdelistor. Om en värdeslista inte innehåller tillräckligt med element för var och en av dess loopvariabler i varje iteration används tomma värden för de saknade elementen.

Deha sönder ochFortsätta uttalanden kan åberopas inuti kropp , med samma effekt som i för kommando. Foreach returnerar en tom sträng.

exempel

Följande slingan använder jag och j som loopvariabler för att iterera över par av element i en enda lista.

set x {} foreach {i j} {a b c d e f} {lappend x $ j $ i} # Värdet av x är "b a d c f e" # Det finns tre iterationer i loopen.

Nästa slinga använder jag och j att iterera över två listor parallellt.

set x {} foreach i {a b c} j {d e f g} {lappend x $ i $ j} # Värdet av x är "a d b e c f {} g" # Det finns 4 iterationer i slingan.

De två formerna kombineras i följande exempel.

sätta x {} för {i} {j k} {d e f g} {lappend x $ i $ j $ k} # Värdet av x är "a d e b f g c {} {}" # Det finns tre iterationer i slingan.

anteckningar

Flera relaterade kommandon arbetar medför varje Inklusive:

  • för (n)
  • medan (n)
  • paus (n)
  • fortsätta (n)

Eftersom Linux-distributions- och kärnfrisättningsnivåer varierar, använder du man kommando ( % man ) för att se hur ett kommando används specifikt på din dator.