Was sind die booleschen Literale in PowerShell?
Was sind die booleschen Literale in PowerShell?
Antworten:
$true
und $false
.
Das sind jedoch Konstanten. Es gibt keine Literale auf Sprachebene für Boolesche Werte.
Je nachdem, wo Sie sie benötigen, können Sie auch alles verwenden, was zu einem booleschen Wert gezwungen wird, wenn der Typ boolesch sein muss, z. B. in Methodenaufrufen, die boolesche Werte erfordern (und keine widersprüchliche Überladung aufweisen), oder bedingte Anweisungen. Die meisten Nicht-Null-Objekte sind beispielsweise wahr. null
, leere Strings, leere Arrays und die Nummer 0
sind falsch.
[bool]1
und [bool]0
funktioniert auch.
if ($s.Length) { ... }
ist zum Beispiel vollkommen in Ordnung.
Um weitere Informationen zu bereits vorhandenen Antworten hinzufügen : Die Boolesche Literale $true
und $false
auch Arbeit wie wenn sie als Befehlszeilenparameter für Powershell (PS) Skripte verwendet. Für das folgende PS-Skript, das in einer Datei mit dem Namen gespeichert ist installmyapp.ps1
:
param (
[bool]$cleanuprequired
)
echo "Batch file starting execution."
Wenn ich diese PS-Datei über eine PS-Befehlszeile aufrufen muss, kann ich dies folgendermaßen tun:
installmyapp.ps1 -cleanuprequired $true
ODER
installmyapp.ps1 -cleanuprequired 1
Hier 1
und $true
sind gleichwertig. Auch 0
und $false
sind gleichwertig.
Hinweis : Erwarten Sie niemals, dass das String-Literal true
automatisch in einen Booleschen Wert konvertiert werden kann. Zum Beispiel, wenn ich den folgenden Befehl ausführe:
installmyapp.ps1 -cleanuprequired true
Das Skript kann mit dem folgenden Fehler nicht ausgeführt werden:
Argumenttransformation für Parameter 'Bereinigung erforderlich' kann nicht verarbeitet werden. Der Wert "System.String" kann nicht in "System.Boolean" konvertiert werden. Boolesche Parameter akzeptieren nur boolesche Werte und Zahlen, wie z. B. $ True, $ False, 1 oder 0.