Powershell Ternary Operator

Ich finden den Ternary Operator (Vereinfachung einer if-then-else Anweisung auf einer Zeile) sehr praktisch. Er ist leserlicher als eine simple if-then-else Anweisung, welche sich über mehrere Zeilen verteilt. Viele Sprachen haben den Ternary Operator eingebaut. Nachfolgend ein Beispiel, wenn die Variable “threshold” grösser als 80 ist wird der String “critical”, ansonsten “normal” ausgegeben.

# Konstruktion
value_if_true if condition else value_if_false

# Beispiel
threshold = 79
print('critical' if threshold > 80 else 'normal')
# >> normal
// Konstruktion
condition ? value_if_true : value_if_false

// Beispiel
#include <stdio.h>

int main() {
    int threshold = 81;
    printf("%s", threshold > 80 ? "critical" : "normal");
}
// >> critical

Obschon es den Ternary Operator für Powershell nicht gibt kann sein Verhalten “nachgebaut” werden. Dafür kann die Tatsache, dass ein boolscher Wert durch eine 0 oder eine 1 repräsentiert wird in Zusammenhang mit einem Array verwendet werden. Je nach Script / Programmiersprache ist es unterschiedlich wie ein Wahr oder ein Falsch intern abgespeichert wird. Für Powershell finden wir das mit folgendem Code heraus.

[int]$true
# >> 1
[int]$false
# >> 0

Daraus ist ersichtlich, dass im Array Index 0 der Falsch Wert stehen muss und im Index 1 der Wahr Wert. Das oben verwendete Beispiel sieht dann folgendermassen aus.

# Konstruktion
array(value_if_false,value_if_true)[condition]

# Beispiel
[int]$threshold = 79
Write-Host @('normal','critical')[$threshold -gt 80]
# >> normal

Wofür das Ganze sinnvoll eingesetzt werden kann ist der Kreativität überlassen. In einem noch folgenden Beitrag werde ich aufzeigen wofür ich es bereits verwendet habe.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.