Используйте &&оператор,
cmd1 && cmd2 && cmd3
В shellscripting, &&и ||операторы по образцу оптимизированной реализации логических операторов в C. &&Средства и оператора, а также ||средства ИЛИ. Unix тесно связан с C, а в C второй операнд логических операторов не оценивается, если результат уже известен из первого операнда. Например "false && x", falseдля любого x, поэтому нет необходимости оценивать x(особенно, если xэто вызов функции); аналогично для "true || x". Это также называется семантикой короткого замыкания .
А в Unix традиционно интерпретировать возвращаемые значения команд как истинные значения «успешного завершения»: код выхода 0 означает true(успех), ненулевое значение false(сбой). Таким образом, когда первая команда в cmd1 && cmd2возврате "false"(ненулевой статус выхода, который указывает на сбой), статус составной команды известен: сбой. Таким образом, общая интерпретация cmd1 && cmd2 может быть: «выполнить cmd1, а затем, если это не сработало cmd2». Что именно вы хотите в своем вопросе?
Аналогично с OR: cmd1 || cmd2можно интерпретировать как «выполнить cmd1, ИЛИ если не получится cmd2».
Подсказка: для более длинных цепочек &&, подумайте над тем , чтобы set -eвставить свой сценарий. Это в основном меняет точку с запятой ;на &&пару особых случаев.