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