Ich versuche, in einem Fischschalenskript die Existenz des figlet zu testen binär. Da ich Linux und OS X verwende, kann ich mich nicht darauf verlassen, dass sich die Datei am selben Speicherort befindet, und muss sie dynamisch auflösen. Ich bin es gewohnt, dies mit $(which) zu tun in bash, was funktioniert.
Bei Fischen funktioniert das allerdings nicht richtig. Warum?
function print_hostname --description 'print hostname'
if test -x (which figlet)
hostname | figlet
end
end
Akzeptierte Antwort:
Verwenden Sie type in fish wie in einer Bourne-ähnlichen Shell:
if type -q figlet
hostname | figlet
end
Oder auf ausführbare Dateien in $PATH zu beschränken (Ignorieren von Funktionen, Builtins):
if command -s figlet > /dev/null
hostname | figlet
end