Доступ к ERRORLEVEL из bash-скрипта
У меня есть приложение, которое работает корректно только при запуске из командной строки Windows. Это связано с потоками ввода/вывода.
Я могу вызывать его из bash-скрипта, передавая его в качестве аргумента команде cmd.
cmd /c "badapp"
Это работает нормально, но иногда badapp
выдает ошибки сети, и я не получаю никаких уведомлений об этом. Есть ли способ проверить уровень ошибки (ERRORLEVEL) из bash-скрипта или увидеть вывод badapp
в терминале, выполняющем bash-скрипт?
1 ответ(ов)
Да, $?
— это переменная, которая содержит код возврата последней выполненной команды.
Попробуйте выполнить echo $?
, чтобы увидеть это на практике.
Вот пример из среды Cygwin bash (я предполагаю, что вы используете Cygwin, так как в вашем примере упоминается cmd
Windows).
susam@nifty /cygdrive/c/Documents and Settings/susam/Desktop
$ cmd /c "badapp"
'badapp' не является внутренней или внешней командой,
доступной программе или пакетному файлу.
susam@nifty/cygdrive/c/Documents and Settings/susam/Desktop
$ if [ $? -eq 0 ]
> then
> echo "good"
> else
> echo "bad"
> fi
bad
В этом примере команда cmd /c "badapp"
завершилась с ошибкой, поэтому переменная $?
вернула ненулевое значение, что привело к выводу "bad".
Как изменить цвет вывода echo в Linux
Как работает "cat << EOF" в bash?
Передача параметров в функцию Bash
Расширение переменных внутри одинарных кавычек в команде Bash
Как разделить большой текстовый файл на меньшие файлы с равным количеством строк?