Здесь показано использование ||
и &&
в одной строке для объединения выполнения команд: Как я могу проверить наличие ошибок apt-get в скрипте bash?
Я пытаюсь остановить выполнение скрипта, если определенное условие не выполняется,
например
false || echo "Obvious error because its false on left" && exit
Здесь он печатает Obvious error because its false on the left
и выходит из консоли, что я и хотел.
true || echo "This shouldn't print" && exit
Здесь нет эхо-печати, но exit
команда также выполняется, т. Е. Консоль закрыта, не должна ли exit
команда не выполняться, потому что правая команда эха не была выполнена? Или по умолчанию оператор считается ложным в левой части &&
оператора?
Редактировать: я должен был упомянуть об этом раньше, моя цель состояла в том, чтобы повторить ошибку и выйти, если она не была ясна. Что касается моего конкретного случая обнаружения ошибок при группировании условий с использованием && и ||, то @ bodhi.zazen ответ решает проблему.
Ответ @takatakatek проясняет управление потоком, а ссылки на руководство bash превосходны
Ответ @muru имеет хорошее объяснение, почему бы не использовать set -e, если вы хотите, чтобы пользовательские сообщения об ошибках генерировались с альтернативами использования perl и trap, что, я думаю, является более надежным способом, и я вижу, что использую его начиная со своего второго скрипта bash!