Bash Проверка успешности выполнения сценария (код выхода не работает) - PullRequest
0 голосов
/ 08 июля 2019

У меня есть следующий скрипт bash:

echo one
echo two
cd x
echo three

, который завершается неудачей в 3-й строке, поскольку нет каталога с именем x. Однако после запуска скрипта, когда я делаю $?, возвращается 0, даже если в скрипте есть ошибка. Как определить, успешно ли запущен скрипт или нет?

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Проверьте условие существования каталога в операторах скрипта:

[ -d x ] && cd x || { echo "no such directory"; exit 1; }

Или поставить set -e после строки Шебанга:

#!/bin/bash
set -e
echo one
echo two
cd x
echo three
0 голосов
/ 08 июля 2019

Вы должны закончить оператором выхода

echo one
echo two
cd x
exitCode=$?
echo three
exit $exitCode;

Тогда

./myscript
echo $?

1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...