Есть ли элегантный способ хранения и оценки возвращаемых значений в скриптах bash?
У меня есть довольно сложная серия команд в bash, которая в итоге возвращает значимый код выхода. Различные места в дальнейшем в скрипте должны условно переходить в зависимости от того, успешен ли набор команд.
В настоящее время я храню код завершения и проверяю его численно, что-то вроде этого:
long_running_command | grep -q trigger_word
status=$?
if [ $status -eq 0 ]; then
: stuff
else
: more code
if [ $status -eq 0 ]; then
: stuff
else
Почему-то кажется, что это должно быть проще. У нас хранится простой код завершения, и теперь мы неоднократно набираем числовые тестовые операции для его запуска. Например, я могу использовать чит для строкового вывода вместо кода возврата, который проще проверить:
status=$(long_running_command | grep trigger_word)
if [ $status ]; then
: stuff
else
: more code
if [ $status ]; then
: stuff
else
На первый взгляд это выглядит более прямо, но я понимаю, что это грязно.
Если другая логика не была настолько сложной, и я выполнял ее только один раз, я понимаю, что мог бы внедрить ее вместо оператора теста, но это не идеально, когда вам нужно повторно использовать результаты в других местахбез повторного запуска теста:
if long_running_command | grep -q trigger_word; then
: stuff
else
Единственное, что я обнаружил, это присвоение кода как части подстановки команд:
status=$(long_running_command | grep -q trigger_word; echo $?)
if [ $status -eq 0 ]; then
: stuff
else
Даже это технически не одноразовое назначение (хотя некоторые могут утверждать, что читаемость лучше), нонеобходимый числовой тестовый синтаксис все еще кажется громоздким для меня. Может быть, я просто ОКР.
Я скучаю по более элегантному способу присвоения кода завершения переменной, а затем переходу к ней позже?