Сохранить код завершения при использовании '$PROMPT_COMMAND'
У меня есть следующий код ( упрощенный для ясности), который вызывается $PROMPT_COMMAND
после каждой команды:
function previous_command_status()
{
exit_code=$?;
if [ $exit_code -eq 0 ]; then
echo "Command successful"
else
echo "Command failed with exit code $exit_code"
fi
}
Проблема, кажется, [ $exit_code -eq 0 ]
Часть изменяет код завершения, поэтому я не могу использовать или сохранить код завершения после завершения выполнения команды. Например:
$ ./failing_script.sh
Command failed with exit code 255
$ echo $?;
1 # this is the exit code of the 'if' statement, not of 'bad'
Я не могу "передать значение", потому что, если я добавлю строку exit $exit_code
внутри функции окно терминала закрывается немедленно.
Можно ли как-нибудь "сохранить" код завершения предыдущей команды или выполнить набор команд таким образом, чтобы они не изменяли значение выхода?
1 ответ
Вы не можете сохранить это. Даже если вы используете case
заявления echo
все равно изменил бы это. Однако вы можете положить его обратно с return
:
exit_code=$?;
if [ $exit_code -eq 0 ]; then
echo "Command successful"
else
echo "Command failed with exit code $exit_code"
fi
return "$exit_code"
Однако вы можете использовать другую глобальную переменную для хранения кода.