Есть ли элегантный способ хранения и оценки возвращаемых значений в скриптах 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
Даже это технически не одноразовое назначение (хотя некоторые могут утверждать, что читаемость лучше), нонеобходимый числовой тестовый синтаксис все еще кажется громоздким для меня. Может я'Я просто ОКР.
Я скучаю по более элегантному способу присвоения кода завершения переменной, а затем переходу к ней позже?