2016-10-12 5 views
2

Gibt es eine einfachere Möglichkeit, einen -or Zustand zu spezifizieren? Zum Beispiel if ($returnValue -eq 0 -or $returnValue -eq 5). Ich würde eher etwas wie if ($returnValue -eq 0 -or 5) schreiben, um zwei mögliche Werte von $ returnValue zu testen. Natürlich macht das etwas anderes. Ok, nur daran gedacht, den Wert in einen Zeichentyp mit einem regulären Ausdruck zu erzwingen: Also, jetzt, wo ich meine Frage beantwortet habe, irgendwelche anderen Ideen?einfacher Powershell ODER Bedingung Syntax

+1

Einfacher oder stumpfer? –

Antwort

4

würde ich -contains oder -in verwenden gegebenenfalls:

if ((0,5) -contains $returnValue) 

oder

if ($returnValue -in (0,5)) 

-in in Powershell v3 hinzugefügt wurde.

Ich entmutige stark die Regex "Lösung", weil es unbeabsichtigte Nebenwirkungen haben kann und die Klarheit reduziert. Zum Beispiel ist 51 -match '0|5'$true.

Erwägen Formatierung nur Ihre if Anweisung auf mehrere Zeilen:

if (
    $returnValue -eq 0 -or 
    $returnValue -eq 5 
) 

Obwohl ich für noch -contains und -in mögen, was Sie erreichen wollen.

$validVals = @(
    0, 
    5, 
    17 
) 

if ($validVals -contains $returnVal) { 
    # ... 
} 

if ($returnVal -in $validVals) { 
    # ... 
} 
+0

Ich stimme zu, dass die Regex-Lösung dafür nicht gut ist. Vielen Dank. – Roman