Recherche…


Introduction

Une instruction switch permet de tester l’égalité d’une variable par rapport à une liste de valeurs. Chaque valeur est appelée un cas et la variable activée est vérifiée pour chaque cas de commutation. Cela vous permet d'écrire un script qui peut choisir parmi une série d'options, mais sans vous obliger à écrire une longue série d'instructions if.

Remarques

Cette rubrique documente l' instruction switch utilisée pour brancher le flux du script. Ne le confondez pas avec les paramètres de commutateur utilisés dans les fonctions comme indicateurs booléens.

Commutateur simple

Les instructions de commutateur comparent une seule valeur de test à plusieurs conditions et effectuent toutes les actions associées pour des comparaisons réussies. Cela peut entraîner plusieurs correspondances / actions.

Compte tenu de l'interrupteur suivant ...

switch($myValue)
{
    'First Condition'    { 'First Action' }
    'Second Condition'   { 'Second Action' }
}

'First Action' sera $myValue si $myValue est défini comme 'First Condition' .

'Section Action' sera $myValue si $myValue est défini comme 'Second Condition' .

Rien ne sera $myValue si $myValue ne correspond à aucune des deux conditions.

Instruction de changement avec le paramètre Regex

Le paramètre -Regex permet aux instructions switch d'effectuer une correspondance d'expressions régulières par rapport aux conditions.

Exemple:

switch -Regex ('Condition')
{ 
  'Con\D+ion'    {'One or more non-digits'}
  'Conditio*$'   {'Zero or more "o"'} 
  'C.ndition'    {'Any single char.'}  
  '^C\w+ition$'  {'Anchors and one or more word chars.'} 
  'Test'         {'No match'} 
}

Sortie:

One or more non-digits
Any single char.
Anchors and one or more word chars.

Commutation simple avec pause

Le mot-clé break peut être utilisé dans les instructions switch pour quitter l'instruction avant d'évaluer toutes les conditions.

Exemple:

switch('Condition')
{
  'Condition'
  {
    'First Action'
  }
  'Condition'
  {
    'Second Action'
    break
  }
  'Condition'
  {
    'Third Action'
  }
}

Sortie:

First Action
Second Action

En raison du mot-clé break dans la seconde action, la troisième condition n'est pas évaluée.

Instruction de changement avec un paramètre générique

Le paramètre -Wildcard permet aux instructions de commutateur d'effectuer une correspondance avec les caractères génériques.

Exemple:

switch -Wildcard ('Condition')
{ 
    'Condition'           {'Normal match'}
    'Condit*'             {'Zero or more wildcard chars.'} 
    'C[aoc]ndit[f-l]on'   {'Range and set of chars.'}  
    'C?ndition'           {'Single char. wildcard'}
    'Test*'               {'No match'} 
}

Sortie:

Normal match
Zero or more wildcard chars.
Range and set of chars.
Single char. wildcard

Instruction de changement avec paramètre exact

Le paramètre -Exact applique les instructions de commutateur pour effectuer une correspondance exacte, insensible à la casse, par rapport aux conditions de chaîne.

Exemple:

switch -Exact ('Condition')
{ 
  'condition'   {'First Action'}
  'Condition'   {'Second Action'} 
  'conditioN'   {'Third Action'}  
  '^*ondition$' {'Fourth Action'} 
  'Conditio*'   {'Fifth Action'} 
}

Sortie:

First Action
Second Action
Third Action

Les première à troisième actions sont exécutées car leurs conditions associées correspondent à l'entrée. Les chaînes regex et wildcard dans les quatrième et cinquième conditions échouent à la correspondance.

Notez que la quatrième condition correspondrait également à la chaîne d'entrée si la correspondance des expressions régulières était en cours, mais a été ignorée dans ce cas, car ce n'est pas le cas.

Instruction de changement avec le paramètre CaseSensitive

Le paramètre -CaseSensitive applique les instructions de commutateur pour effectuer une correspondance exacte et sensible à la casse par rapport aux conditions.

Exemple:

switch -CaseSensitive ('Condition')
{ 
  'condition'   {'First Action'}
  'Condition'   {'Second Action'} 
  'conditioN'   {'Third Action'}  
}

Sortie:

Second Action

La seconde action est la seule action exécutée car c'est la seule condition qui correspond exactement à la chaîne 'Condition' lors de la prise en compte de la sensibilité à la casse.

Instruction de changement avec paramètre de fichier

Le paramètre -file permet à l'instruction switch de recevoir les entrées d'un fichier. Chaque ligne du fichier est évaluée par l'instruction switch.

Exemple de fichier input.txt :

condition
test

Exemple de déclaration de commutation:

switch -file input.txt
{ 
  'condition' {'First Action'}
  'test'      {'Second Action'} 
  'fail'      {'Third Action'}   
}

Sortie:

First Action
Second Action

Commutateur simple avec condition par défaut

Le mot-clé Default est utilisé pour exécuter une action lorsqu'aucune autre condition ne correspond à la valeur d'entrée.

Exemple:

switch('Condition')
{
  'Skip Condition'
  {
    'First Action'
  }
  'Skip This Condition Too'
  {
    'Second Action'
  }
  Default
  {
    'Default Action'
  }
}

Sortie:

Default Action

Changer de déclaration avec des expressions

Les conditions peuvent aussi être des expressions:

$myInput = 0

switch($myInput) {
    # because the result of the expression, 4, 
    # does not equal our input this block should not be run.
    (2+2)  { 'True. 2 +2 = 4' }

    # because the result of the expression, 0, 
    # does equal our input this block should be run.
    (2-2) { 'True. 2-2 = 0' }

    # because our input is greater than -1 and is less than 1 
    # the expression evaluates to true and the block should be run.
    { $_ -gt -1 -and $_ -lt 1 } { 'True. Value is 0' }
}

#Output
True. 2-2 = 0
True. Value is 0


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow