kumaxim
@kumaxim
Web-программист

Как подавить вывод функции, получив при этом код возврата?

Доброго времени суток.

Имею пользовательскую функцию на bash вида:
superMegaFunction()
{
    .................
    echo "FATAL ERROR: some_text_error"
    return 127
    .................
    return 0
}


Далее по коду, необходимо получить код возврата функции выше, т.е. 0 или 127, при этом подавив любой вывод, как echo. Пробую сделать вот так:
checkMega()
{
    superMegaFunction &> /dev/null
    echo "Status: $?"
}

Выполнение скрипта до echo даже не доходит, т.е. при установленном флаге bash -x я не вижу вывод "Status: %сode%". Пробовал вариант без superMegaFunction > /dev/null - результат тот же самый

Подскажите пожалуйста, что я делаю не так? При return bash ведь должен в любом случае возвращать код, не прерывая выполнение общего скрипта или я чего-то не учитываю?
  • Вопрос задан
  • 251 просмотр
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
всё отлично отрабатывается, к примеру:
f(){
    if [[ $1 != "" ]]
    then  echo "ok"
          return 0
    else  echo "error"
          return 1
    fi
}

check_f(){
   f &> /dev/null
   echo "Status: $?"

   f ww &> /dev/null
   echo "Status: $?"
}

check_f

вывод будет:
Status: 1
Status: 0


вы видать чтото в функции superMegaFunction напутали, возможно там где-то стоит exit
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы