GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Fish Shell-Test auf Existenz der Datei in $path?

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

Linux
  1. Was ein Shell-Dotfile für Sie tun kann

  2. Secure Shell(SSH)-Befehle für die Linux-Administration.

  3. Ressourcen für die Programmierung von portablen Shells?

  4. Benötigen Sie eine Shell für SCP?

  5. Fish Shell:Wie kann ich die Farben für die Autocomplete-Funktion anpassen?

ls-Befehl in Linux zum Auflisten von Dateien

Aktivieren Sie den Zeitstempel für den Verlaufsbefehl in Fish Shell

Shell - Variableninhalte in eine Datei schreiben

Was ist eine .sh-Datei?

Transliterationsskript für die Linux-Shell

Kann ein Shell-Skript darauf warten, dass sich eine Datei ändert, und Maßnahmen ergreifen?