Есть ли элегантный способ хранения и оценки возвращаемых значений в скриптах 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

Даже это технически не одноразовое назначение (хотя некоторые могут утверждать, что читаемость лучше), нонеобходимый числовой тестовый синтаксис все еще кажется громоздким для меня. Может я'Я просто ОКР.

Я скучаю по более элегантному способу присвоения кода завершения переменной, а затем переходу к ней позже?

Ответы на вопрос(6)

Ваш ответ на вопрос