Skip to main content

Construire des itérateurs de liste avec la commande Linux "foreach"

machine a mouler sable principe de fonctionnement (Avril 2025)

machine a mouler sable principe de fonctionnement (Avril 2025)
Anonim

Lors de la programmation, lepour chaque Cette commande implémente une boucle dans laquelle les variables de boucle assument les valeurs d'une ou de plusieurs listes. Dans le cas le plus simple, il existe une variable de boucle, varname et une liste, liste , c’est une liste de valeurs à assigner à varname . le corps L'argument est un script Tcl. Pour chaque élément de liste (dans l'ordre du premier au dernier),pour chaque assigne le contenu de l'élément à varname comme si lelindexCette commande a été utilisée pour extraire l’élément, puis appelle l’interpréteur Tcl pour exécuter corps .

Synopsis

pour chaque corps de la liste varname

pour chaque varlist1 list1 ? varlist2 list2 … ? corps

Discussion

Dans un cas général, il peut y avoir plus d’une liste de valeurs (par exemple, liste1 et liste2 ), et chaque liste de valeurs peut être associée à une liste de variables de boucle (par exemple, varlist1 et varlist2 ). A chaque itération de la boucle, les variables de chaque varlist sont affectés des valeurs consécutives de la correspondante liste . Des valeurs dans chacun liste sont utilisés dans l'ordre du premier au dernier, et chaque valeur est utilisée exactement une fois. Le nombre total d'itérations de boucle est suffisamment important pour utiliser toutes les valeurs de toutes les listes de valeurs. Si une liste de valeurs ne contient pas suffisamment d'éléments pour chacune des variables de boucle à chaque itération, des valeurs vides sont utilisées pour les éléments manquants.

lePause etcontinuer les déclarations peuvent être invoquées à l'intérieur corps , avec le même effet que dans le pour commander. Le Foreach retourne une chaîne vide.

Exemples

La boucle suivante utilise je et j en tant que variables de boucle à parcourir sur des paires d'éléments d'une seule liste.

set x {} foreach {i j} {a b c d e f} {lappend x $ j $ i} # La valeur de x est "b a d c f e" # La boucle comporte 3 itérations.

La prochaine boucle utilise je et j itérer sur deux listes en parallèle.

set x {} foreach i {a b c} j {d e f g} {lappend x $ i $ j} # La valeur de x est "a d b e c f {} g" # Il y a 4 itérations de la boucle.

Les deux formes sont combinées dans l'exemple suivant.

set x {} foreach i {a b c} {j k} {d e f g} {lappend x $ i $ j $ k} # La valeur de x est "a d e f f g c {} {}" # Il y a 3 itérations de la boucle.

Remarques

Plusieurs commandes associées fonctionnent avecpour chaque comprenant:

  • pour (n)
  • tant que (n)
  • pause (n)
  • continuer (n)

Étant donné que les niveaux de distribution Linux et de version du noyau varient, utilisez le homme commande ( % homme ) pour voir comment une commande est spécifiquement utilisée sur votre ordinateur.