Как выйти из всех призывных сценариев в Bash?
Вопрос
Допустим, у меня есть следующие сценарии
пепел
echo in a
if test 1 -ne 2; then
echo oops
exit 1
fi
Б.С.
echo in b
./a.sh
echo in b 2
При запуске B.SH я хочу, чтобы он вышел, если выходит из A.SH. Как мне это сделать?
(Текущий выход
in b
in a
oops
in b 2
И это не то, что я хочу)
Спасибо, Ричка
Решение
Проверьте состояние возврата команды, соответствующая переменная - это $?
Анкет В качестве альтернативы, вы можете короткое замыкание, используя command || exit
Другие советы
echo in b
./a.sh && echo in b 2
Это в основном проверяет, что первый сценарий не выходит из ненулевого. Если это правда, и только тогда он запустит вторую функцию.
Я не думаю, что есть способ сделать это, не проверяя статус возврата подборной, например:
# This will run b.sh, and if that exits with a non-zero status, we will also
# exit with that same status; otherwise, we continue.
./b.sh || echo $?
Не связан с StackOverflow