1

Я работаю со скриптом, который я не могу изменить, который не использует коды выхода. (все выходы просто «выход»)

Без изменения сценария (или воплей на идиотов, которые его написали), есть ли способ проверить, "завершился" ли сценарий, вместо того, чтобы выйти в какой-то момент раньше в сценарии?

Единственное, о чем я могу думать, это как-то отслеживать активные процессы, пока они не завершатся, но это также закончится при выходе из-за ошибки.

1 ответ1

1

Я работаю со скриптом, который я не могу изменить, который не использует коды выхода.

Если есть ошибка, последняя строка в этом файле должна содержать 'exit', в противном случае сценарий завершится успешно.

Этот код заставит команду завершиться с кодом 1, если она не удалась, и кодом 0, если она прошла успешно:

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit

tail -n1 отображает только последнюю строку, а grep -vq exit проверяет, содержит ли эта строка слово exit .

Примеры того, как сделать это отображение полезных сообщений:

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit && echo Success

Или же:

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit || echo Fail

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .