#bash
#bash
Вопрос:
У меня есть сценарий оболочки, который возвращает кучу разных кодов ошибок. Некоторые из них безобидны, и я хочу рассматривать их как успех, а затем использовать amp;amp;
для запуска другой команды (т.Е. Все в той же команде списка). Есть ли способ сделать это?
Например:
cmd1 amp;amp; cmd2;
cmd1 возвращает 0 при успехе, 1 при безобидной ошибке и 2 при реальной ошибке. Я хочу, чтобы команда продолжала выполняться с 0 или 1.
Комментарии:
1. Не могли бы вы показать нам какой-нибудь код, пожалуйста?
2. Конечно, только что добавлен пример кода. Спасибо.
3.Вам нужно будет выполнить
cmd1
, а затем выполнить,cmd2
если код возврата равен 0 или 1. Чтобы уточнить, здесь, вероятно, нет короткого пути, чтобы иметь возможность использовать короткое замыкание.4. @devnull О, я подумал, может быть, есть какой-то оператор фильтра / маски, о котором я не знал.
Ответ №1:
Вы можете сделать это таким образом
cmd1; (( $? < 2 )) amp;amp; cmd2
Комментарии:
1. Да, я это знал. Спасибо.
Ответ №2:
Вы можете использовать только amp;amp;
для продолжения 0
кода возврата.
Однако вы можете прочитать код возврата и принять на его основе менее строгое решение (используя либо if
или даже amp;amp;
):
/your/command; rc=$?
[ $rc -lt 2 ] amp;amp; /your/continuation
Ответ №3:
Вы также можете использовать test
cmd1; test $? -lt 2 amp;amp; cmd2