Ist es möglich, den nicht gefundenen Befehl abzufangen?

749
cwallenpoole

Wenn Sie also auf Posix sind und etwas eingeben, das kein Befehl ist, erhalten Sie die Fehlermeldung "Befehl nicht gefunden".

> ggg -bash: ggg: command not found 

Gibt es eine Möglichkeit, dies abzufangen und einen anderen Befehl auszulösen? Was ist mit dem Text zu ändern.

(Ich verwende einen Mac ... wenn das wichtig ist, aber ich benutze auch Ubuntu und RHEL-Sorten.)

1
Schauen Sie sich auch diesen Beitrag an: https://unix.stackexchange.com/questions/104579/catch-command-not-found-from-shell-script Pimp Juice IT vor 6 Jahren 0
@Facebook Das sieht nach einer großartigen Antwort aus. Fast "dies sollte als doppelt markiert werden". cwallenpoole vor 6 Jahren 0
Wenn es nicht auf SuperUser ist, ist es nicht doppelt vorhanden, also lassen Sie es jetzt, bis andere es sehen und einrasten. Pimp Juice IT vor 6 Jahren 0
Was denkst du über die Doppelrohrmethode aus der anderen Antwort? Vielleicht haben das und der Befehl 2 oder der Fehlerbefehl grep, um eine bestimmte Zeichenfolge zu finden und nur dann einen anderen Befehl auszuführen, wenn diese Zeichenfolge (zB "` Befehl nicht gefunden` ") wahr ist? Pimp Juice IT vor 6 Jahren 0

1 Antwort auf die Frage

1
dmb

Bash hat kein Try / Catch / Except, aber Sie können || verwenden so was. Wenn der zweite Befehl nur ausgeführt wird, wenn der erste fehlschlägt. Das macht das Doppelrohr hier. Und das ist für jede Art von Fehler.

gggg || gggg2

wo gggg2 ist dein anderer Befehl

Mit dieser Lösung könnte er möglicherweise `laufen || `mit allen anwendbaren Befehlen und das würde sicherstellen, dass der Fehlerbefehl nur ausgeführt wird, wenn der erste Befehl fehlschlägt. Pimp Juice IT vor 6 Jahren 0