Вот пример, который пытается выполнить команду и проверяет, был ли он выполнен успешно, при этом он выводится для дальнейшей обработки:
#!/bin/bash
readonly OUTPUT=$(foo)
readonly RES=$?
if [[ ${RES} != 0 ]]
then
echo "failed to execute foo"
exit 1
else
echo "foo success: '${OUTPUT}'"
fi
Сообщается, что это был успех, даже нет такого исполняемого файла foo
. Но, если я удаляю переменную readonly
из OUTPUT
, она сохраняет ошибочный код выхода и обнаруживается сбой.
Я пытаюсь использовать readonly как для техники "защитного программирования", как рекомендовано где-то... но похоже, что в этом случае он кусает себя.
Есть ли какое-то чистое решение для сохранения readonly
, сохраняя при этом код выхода команды/подоболочки? Было бы неутешительно, что нужно помнить этот исключительный случай использования или вернуться к использованию readonly
когда-либо...
Использование Bash 4.2.37 (1) в Debian Wheezy.