Я знаю, что код возврата будет содержаться в $?
после выполнения команды, но что означает $?
после выполнения сценария? Код возврата последней команды в этом скрипте?Имеет ли сценарий bash код возврата сам?
Могу ли я определить, был ли сценарий искривлен от головы до хвоста и не прерван какой-то неожиданной остановкой системы или чем-то еще?
Если у меня есть сценарий, как показано ниже excuted,
Command A;
if [ $? -eq 0]
then
echo "OK" >> log
else
echo "failed" >> log
fi
и система остановлена в то время как A
был запущен, то, что я найду в этом файле журнала? «ОК», «не удалось» или ничего?
Если другой скрипт был прерван прерывание, статус выхода, сообщенный оболочке, не будет равен нулю (если только скрипт обрабатывал или игнорировал прерывание и организовал нулевой вывод после всех). Если система остановилась, вызывающий скрипт тоже остановился - нет возможности определить что-либо, если у вас нет очень сложной системы для обработки повторений и т. Д. –
Обратите внимание, что если последняя команда, выполняемая скриптом, не 'exit' (например, если он выйдет из-за того, что он попал в конец файла сценария или вышел из-за «set -e' и ошибки), код возврата скрипта будет кодом возврата последней выполненной команды. –
Это было бы «да». –