Используйте &&
оператор,
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
вставить свой сценарий. Это в основном меняет точку с запятой ;
на &&
пару особых случаев.