Eine Problemumgehung und ein insgesamt angenehmerer Ansatz ist, wenn man das, was Sie in diesem Fall tun, which
völlig auf die Verwendung verzichtet.
if (( $+commands[foobar] )) # configure foobar fi
Wie funktioniert es?
Von zshexpn(1)
:
$ {+ name}
Wenn name der Name eines Parameters ist, wird '1' ersetzt, andernfalls '0'.
$commands
ist ein assoziatives Array, das von zsh (auch dem hash
Builtin) verwaltet wird und aus Befehlsnamen als Schlüssel und dem zugehörigen Pfad als Wert besteht.
Wenn Sie die ${+name}
Erweiterung für die $commands
Hashtabelle verwenden, die durch den Befehl indiziert wird, dessen Existenz Sie testen möchten, erhalten Sie eine kostengünstige und schnelle Möglichkeit, diese Überprüfung durchzuführen.
Schließlich ist das (( expr ))
Konstrukt eine arithematische Bewertung, da die ${+name}
Erweiterung entweder 0 oder 1 zurückgibt.