Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Brève description
Décrit comment l’instruction continue renvoie immédiatement le flux du programme en haut d’une boucle de programme, d’une instruction switch ou d’une instruction trap.
Description longue
L’instruction continue fournit un moyen de quitter le bloc de contrôle actuel mais de continuer l’exécution, plutôt que de quitter complètement. L’instruction supporte les labels.
Un label est un nom que vous assignez à une instruction dans un script.
Utilisation de boucles continue dans
Une instruction continue sans label renvoie immédiatement le flux du programme en haut de la boucle la plus interne qui est contrôlée par une instruction for, foreach, do ou while. L’itération actuelle de la boucle est terminée et la boucle continue avec l’itération suivante.
Dans l’exemple suivant, le flux du programme revient en haut de la boucle while si la variable $ctr est égale à 5. Par conséquent, tous les nombres entre 1 et 10 sont affichés sauf 5 :
while ($ctr -lt 10)
{
$ctr += 1
if ($ctr -eq 5)
{
continue
}
Write-Host -Object $ctr
}
Lors de l’utilisation d’une boucle for, l’exécution continue à l’instruction <Repeat>, suivie du test <Condition>. Dans l’exemple ci-dessous, une boucle infinie ne se produira pas car la décrémentation de $i se produit après le mot-clé continue.
# <Init> <Condition> <Repeat>
for ($i = 0; $i -lt 10; $i++)
{
Write-Host -Object $i
if ($i -eq 5)
{
continue
# Will not result in an infinite loop.
$i--
}
}
Utilisation d’un continue étiqueté dans une boucle.
Une instruction étiquetée continue met fin à l'exécution de l'itération et transfère le contrôle à l'itération englobante cible ou à l'étiquette d'instruction switch.
Dans l’exemple suivant, la boucle for la plus interne est terminée lorsque $condition est True et l’itération continue avec la deuxième boucle for à labelB.
:labelA for ($i = 1; $i -le 10; $i++) {
:labelB for ($j = 1; $j -le 10; $j++) {
:labelC for ($k = 1; $k -le 10; $k++) {
if ($condition) {
continue labelB
} else {
$condition = Update-Condition
}
}
}
}
Utilisation de continuer dans une instruction switch
Une instruction continue sans label dans une switch termine l’exécution de l’itération switch actuelle et transfère le contrôle en haut de la switch pour obtenir l’élément d’entrée suivant.
Lorsqu’il y a un seul élément d’entrée, continue quitte l’instruction switch entière. Lorsque l’entrée switch est une collection, le switch teste chaque élément de la collection. Le continue quitte l’itération actuelle et le switch continue avec l’élément suivant.
switch (1,2,3) {
2 { continue } # moves on to the next element, 3
default { $_ }
}
1
3
Utilisation de continuer dans une instruction trap
Si la dernière instruction exécutée dans le corps d’une instruction trap est continue, l’erreur capturée est ignorée silencieusement et l’exécution se poursuit avec l’instruction immédiatement après celle qui a provoqué trap.
N’utilisez pas continuer en dehors d’une boucle, d’un commutateur ou d’une interruption
Lorsque continue est utilisé en dehors d’une structure qui le supporte directement (boucles, switch, trap), PowerShell recherche dans la pile d’appels une structure englobante. S’il ne trouve aucune structure englobante, l’espace d’exécution actuel est silencieusement terminé.
Cela signifie que les fonctions et les scripts qui utilisent par inadvertance un continue en dehors d’une construction englobante qui le prend en charge peuvent mettre fin par inadvertance à leurs appelants .
À l’aide continue d’un pipeline, tel qu’un ForEach-Object scriptblock, ne quitte pas seulement le pipeline, il met potentiellement fin à l’intégralité de l’espace d’exécution.