Використовувати &&
оператор,
cmd1 && cmd2 && cmd3
У оболонках &&
та ||
операторах моделюються після оптимізованої реалізації логічних операторів у C. &&
означає оператор AND і ||
означає OR. Unix тісно пов'язаний з C, а в C другий операнд логічних операторів не оцінюється, якщо результат вже відомий з першого операнда. Напр. "false && x"
Для false
будь-якого x
, тому не потрібно оцінювати x
(особливо якщо x
це виклик функції); аналогічно для "true || x"
. Це також називається семантикою короткого замикання .
І в Unix традиційно трактувати повернені значення команд як значення "істинного завершення" істинні значення: код виходу 0 означає true
(успіх), ненульовий засіб false
(відмова). Отже, коли cmd1 && cmd2
повертається перша команда, що повертається "false"
(ненульовий статус виходу, що вказує на збій), відомий статус складної команди: відмова. Таким чином, загальне тлумачення cmd1 && cmd2
може бути: "виконайте cmd1
, а потім, якщо воно не вийшло з ладу cmd2
". Що саме ви хочете в своєму запитанні.
Аналогічно з АБО: cmd1 || cmd2
може трактуватися як "виконати cmd1
, АБО якщо це не вдалося cmd2
".
Підказка: для довших ланцюгів &&
розглянути питання про те , щоб ввести set -e
свій сценарій. Це в основному змінює крапку з комою ;
на &&
кілька спеціальних випадків.