Скрипт Bash, если C ++ что-то возвращает

0

У меня есть обычное приложение C++, которое возвращает 0, если все в порядке и printf (...), если что-то пойдет не так.

У меня также есть скрипт bash (работает как cronjob), который должен проверять выполнение приложения C++.

Как я могу в bash:

if ./run_app; then
else
fi

проверить, возвращает ли он 0 или какой-либо другой текст?

if ./run_app = 0; then

не работает.

ОБНОВИТЬ:

Мой фактический код в C++ выглядит так, когда все идет хорошо:

int main(int argc, char **argv)
{
    ...
    return 0;
}
  • 0
    Возвращает ли 0, когда что-то идет не так? Это абсолютно бесшумно (вообще ничего не выводится), когда работает?
  • 1
    Вы имеете в виду, что он возвращает 0 из main() или выводит 0 в stdout?
Показать ещё 1 комментарий
Теги:
debian

3 ответа

1
Лучший ответ

Если приложение возвращает 0 при успехе и не-0 при неудаче, то первая форма

if ./run_app; then
else
fi

Будет работать.

  • 0
    Мой main () возвращает 0, когда все идет правильно. Запуск приложения в консоли ничего не возвращает. Но когда я распечатаю $? в консоли отображается «1», а не «0».
  • 0
    Нашел этот tldp.org/LDP/abs/html/exitcodes.html , так что я начну отлаживать ...
3

Вы также можете сделать:

./run_app
if [ $? -eq 0 ]; then

как $? фиксирует возвращаемое значение последней программы.

2

Используйте тест (1).

например

result=$(my_application)
backup=$?

[ -z "$result" ] && echo "my_application printed nothing"
[ $backup -eq 0 ] && echo "my_application returned zero"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню