Wie negiere ich einen bedingten Test in PowerShell?
Wenn ich beispielsweise nach dem Verzeichnis C: \ Code suchen möchte, kann ich Folgendes ausführen:
if (Test-Path C:\Code){
write "it exists!"
}
Gibt es eine Möglichkeit, diesen Zustand zu negieren, z. B. (nicht arbeitend):
if (Not (Test-Path C:\Code)){
write "it doesn't exist!"
}
Problemumgehung :
if (Test-Path C:\Code){
}
else {
write "it doesn't exist"
}
Das funktioniert gut, aber ich würde etwas Inline bevorzugen.
windows
powershell
Ben McCormack
quelle
quelle
-not
kommt mit der traditionellen Alternative von!
dann? Kann ich irgendwie die traditionellen Alternativen für-eq
und-ne
auch bekommen?-not
ist der einzige logische Operator, der mit einer Alternativehelp about_Logical_Operators
geliefert wird (siehe ), und Operatoren können nicht als Alias verwendet werden.!
erforderlichen Klammern.!
selbst benötigt keine Klammern. Zumindest nicht in PS3.Wenn Sie wie ich sind und die doppelte Klammer nicht mögen, können Sie eine Funktion verwenden
Beispiel
quelle
not
Implementierung aber wahrscheinlich nicht überall verwenden (not Test-Path -path C:\Code
funktioniert zum Beispiel nicht). Siehe auch diesen verwandten Beitrag .unless
als Schlüsselwort (genau wieif
), aber die meisten Benutzer aus anderen Sprachen hassen es.Powershell akzeptiert auch den Operator C / C ++ / C * not
Ich benutze es oft, weil ich an C * gewöhnt bin ...
ermöglicht die Komprimierung / Vereinfachung von Code ...
ich finde es auch eleganter ...
quelle
Wenn Ihnen die doppelten Klammern nicht gefallen oder Sie keine Funktion schreiben möchten, können Sie einfach eine Variable verwenden.
quelle