Можно ли отловить ошибку команды not found?

692
cwallenpoole

Таким образом, если вы используете Posix и вводите что-то, что не является командой, это выдает ошибку «команда не найдена».

> ggg -bash: ggg: command not found 

Есть ли способ перехватить это и заставить его вызвать другую команду? Как насчет изменения текста.

(Я использую Mac ... если это имеет значение, но я также использую Ubuntu и разновидности RHEL)

1
Посмотрите и этот пост: https://unix.stackexchange.com/questions/104579/catch-command-not-found-from-shell-script Pimp Juice IT 7 лет назад 0
@Facebook Это выглядит как отличный ответ. Почти «это должен быть отмечен как дубликат» уровня. cwallenpoole 7 лет назад 0
Если он не на SuperUser, он не дублируется, так что оставьте пока пока другие не увидят и не включат. Pimp Juice IT 7 лет назад 0
Что вы думаете о методе двойной трубы из другого ответа? Может быть, у вас есть команда 2 или команда ошибки grep, чтобы найти конкретную строку и запустить другую команду, только если значение этой строки (например, «команда не найдена») истинно? Pimp Juice IT 7 лет назад 0

1 ответ на вопрос

1
dmb

Bash не имеет Try / Catch / Except, но вы можете использовать || как это. Если вторая команда будет запущена только в случае сбоя первой. Вот что здесь делает двойная труба. И это за любую ошибку.

gggg || gggg2

где gggg2 - ваша другая команда

Таким образом, с этим решением он может потенциально работать || `со всеми применимыми командами, и это обеспечит выполнение команды error только в случае сбоя первой команды. Pimp Juice IT 7 лет назад 0

Похожие вопросы