Partager via


À propos de l’arrêt

DESCRIPTION COURTE

Décrit une instruction que vous pouvez utiliser pour quitter immédiatement les instructions Foreach, For, While, Do ou Switch.

DESCRIPTION DÉTAILLÉE

Lorsqu’une instruction Break apparaît dans une boucle, telle qu’une boucle Foreach, For ou While, l’instruction Break entraîne la sortie immédiate de PowerShell. Dans une construction Switch, l’arrêt entraîne la sortie de PowerShell du bloc de code Switch.

Une instruction Break peut inclure une étiquette qui vous permet de quitter les boucles incorporées. Une étiquette peut spécifier n’importe quelle boucle mot clé, comme Foreach, For ou While, dans un script.

L’exemple suivant montre comment utiliser une instruction Break pour quitter une instruction For :

for($i=1; $i -le 10; $i++) {
   Write-Host $i
   break
}

Dans cet exemple, l’instruction Break quitte la boucle For lorsque la variable $i est égale à 1. Même si l’instruction For prend la valeur True jusqu’à ce que $i soit supérieur à 10, PowerShell atteint l’instruction break lors de la première exécution de la boucle For.

Il est plus courant d’utiliser l’instruction Break dans une boucle où une condition interne doit être remplie. Considérez l’exemple d’instruction Foreach suivant :

$i=0
$varB = 10,20,30,40
foreach ($val in $varB) {
  $i++
  if ($val -eq 30) {
    break
  }
}
Write-Host "30 was found in array position $i"

Dans cet exemple, l’instruction Foreach itère le tableau $varB. Chaque fois que le bloc de code est exécuté, la variable $i est incrémentée de 1. L’instruction If prend la valeur False lors des deux premières exécutions de la boucle. La troisième fois que la boucle est exécutée, $i est égal à 3, et la variable $val est égale à 30. À ce stade, l’instruction Break s’exécute et la boucle Foreach se ferme.

Vous sortez des autres instructions de boucle de la même façon que vous sortez de la boucle Foreach. Dans l’exemple suivant, l’instruction Break quitte une instruction While lorsqu’une exception DivideByZeroException est piégée à l’aide de l’instruction Trap.

$i = 3
while ($true) {
  trap [DivideByZeroException] {
    Write-Host 'divide by zero trapped'
    break
  }
   1 / $i--
}

Une instruction Break peut inclure une étiquette. Si vous utilisez l’mot clé d’arrêt avec une étiquette, PowerShell quitte la boucle étiquetée au lieu de quitter la boucle actuelle. La syntaxe d’une étiquette est la suivante (cet exemple montre une étiquette dans une boucle While) :

:myLabel while (<condition>) { <statement list>}

L’étiquette est un signe deux-points suivi d’un nom que vous attribuez. L’étiquette doit être le premier jeton d’une instruction, et elle doit être suivie de la boucle mot clé, comme While.

Dans PowerShell, seuls les mots clés de boucle, tels que Foreach, For et While, peuvent avoir une étiquette.

L’arrêt déplace l’exécution hors de la boucle étiquetée. Dans les boucles incorporées, le résultat est différent de celui de l’mot clé d’arrêt lorsqu’il est utilisé par lui-même. Cet exemple schématique a une instruction While avec une instruction For :

:myLabel while (<condition 1>) {
  for ($item in $items) {
    if (<condition 2>) {
      break myLabel
    }
    $item = $x   # A statement inside the For-loop
  }
}
$a = $c  # A statement after the labeled While-loop

Si la condition 2 prend la valeur True, l’exécution du script passe à l’instruction après la boucle étiquetée. Dans l’exemple, l’exécution recommence avec l’instruction « $a = $c ».

Vous pouvez imbriquer de nombreuses boucles étiquetées, comme illustré dans l’exemple schématique suivant.

:red while (<condition1>) {
  :yellow while (<condition2>) {
    while (<condition3>) {
      if ($a) {break}
      if ($b) {break red}
      if ($c) {break yellow}
    }
    Write-Host "After innermost loop"
  }
  Write-Host "After yellow loop"
}
Write-Host "After red loop"

Si la variable $b prend la valeur True, l’exécution du script reprend après la boucle étiquetée « red ». Si la variable $c prend la valeur True, l’exécution du contrôle de script reprend après la boucle étiquetée « jaune ».

Si la variable $a prend la valeur True, l’exécution reprend après la boucle la plus interne. Aucune étiquette n’est nécessaire.

PowerShell ne limite pas la distance dans laquelle les étiquettes peuvent reprendre l’exécution. L’étiquette peut même passer le contrôle au-delà des limites d’appel de script et de fonction.

Le mot clé d’arrêt est utilisé pour quitter la construction Switch. Par exemple, l’instruction Switch suivante utilise les instructions Break pour tester la condition la plus spécifique :

$var = "word2"
switch -regex ($var) {
    "word2" {
      Write-Host "Exact" $_
      break
    }

    "word.*" {
      Write-Host "Match on the prefix" $_
      break
    }

    "w.*" {
      Write-Host "Match on at least the first letter" $_
      break
    }

    default {
      Write-Host "No match" $_
      break
    }
}

Dans cet exemple, la variable $var est créée et initialisée sous une valeur de chaîne « word2 ». L’instruction Switch utilise la classe Regex pour faire correspondre d’abord la valeur de la variable au terme « word2 ». (La classe Regex est une expression régulière classe Microsoft .NET Framework.) Étant donné que la valeur de la variable et le premier test de l’instruction Switch correspondent, le premier bloc de code de l’instruction Switch s’exécute.

Lorsque PowerShell atteint la première instruction Break, l’instruction Switch se ferme. Si les quatre instructions Break sont supprimées de l’exemple, les quatre conditions sont remplies. Cet exemple utilise l’instruction break pour afficher les résultats lorsque la condition la plus spécifique est remplie.

VOIR AUSSI

about_Comparison_Operators

about_Continue

about_For

about_Foreach

about_Switch

about_Throw

about_Trap

about_Try_Catch_Finally

about_While