У меня есть обычное приложение 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 при неудаче, то первая форма
if ./run_app; then
else
fi
Будет работать.
Вы также можете сделать:
./run_app
if [ $? -eq 0 ]; then
как $?
фиксирует возвращаемое значение последней программы.
Используйте тест (1).
например
result=$(my_application)
backup=$?
[ -z "$result" ] && echo "my_application printed nothing"
[ $backup -eq 0 ] && echo "my_application returned zero"
0
изmain()
или выводит0
в stdout?