Способ указать команду для запуска в случае неудачи предыдущего - PullRequest
0 голосов
/ 17 апреля 2019

Можно ли перехватить ошибку (unknown command) из интерфейса командной строки и что-то предпринять в случае возникновения ошибки?

Если быть более точным, я ищу способ сделать что-то вроде этого:

if [ previousCommandFails ] ; then
  echo lastCommand >> somewhere.txt
fi

Эхо - это всего лишь пример того, что мне нужен доступ к этой последней команде.

Я хочу, чтобы это было поведение по умолчанию на моем компьютере, поэтому код должен быть размещен где-то вроде ~/.bashrc.

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Вы можете попробовать следующее решение. Я не гарантирую, что это хорошее решение, но оно может помочь в вашем случае.

Создайте небольшой скрипт, который может проверить предыдущую команду, т.е. test.sh с содержимым:

if [ $? -ne 0 ] then history 1 >> /path/to/failed_commands.txt fi

Затем установите эту переменную:

PROMPT_COMMAND+="source /path/to/test.sh"

PROMPT_COMMAND Если установлено, значение выполняется как команда до выдача каждой первичной подсказки.

0 голосов
/ 17 апреля 2019

Зависит от того, что вы называете сбой .Если он просто возвращает ненулевое значение, я боюсь, что вам придется явно тестировать его после каждой команды или использовать специальную оболочку (*) .

Но trap можетиспользоваться для выполнения определенной команды при получении сигнала:

trap action signal

Если этого недостаточно, вам нужно будет получить источник оболочки (posix shell или bash) и настроить его так, чтобы он вас встретил.необходимо ...

...