2011-07-26 2 views
30

У меня есть приложение, которое работает только при вызове из командной строки Windows. Что-то делать с потоками ввода/вывода.Доступ к ERRORLEVEL из сценария bash

Поэтому я могу назвать это из сценария bash, передав его как аргумент cmd.

CMD/с «badapp»

Это работает отлично - но иногда badapp терпит неудачу с сетевыми проблемами - и я не получаю обратную связь. Есть ли в любом случае, чтобы проверить ERRORLEVEl из сценария bash - или увидеть вывод из badapp на терминале, на котором запущен скрипт bash?

ответ

36

Да, $? - это переменная, содержащая уровень ошибки.

Попробуйте echo $? например.

Пример из Cygwin Баш (я предполагаю, что вы используете Cygwin, потому что вы используете Windows, cmd в вашем примере.)

[email protected] /cygdrive/c/Documents and Settings/susam/Desktop 
$ cmd /c "badapp" 
'badapp' is not recognized as an internal or external command, 
operable program or batch file. 

[email protected]/cygdrive/c/Documents and Settings/susam/Desktop 
$ if [ $? -eq 0 ] 
> then 
> echo "good" 
> else 
> echo "bad" 
> fi 
bad 
+0

жаль, что я хотел бы упомянуть, что я использовал Cygwin. Вы уверены, что это превратит Windows ERRORLEVEL в эквивалент bash $? – shipshape

+5

Да! Почему бы вам просто не попробовать и не подтвердить себя? –

+0

спасибо, что это работает вообще. Проблема, похоже, связана с «badapp» - когда она терпит неудачу с сетевыми проблемами, она не постоянно устанавливает уровень ошибок – shipshape

Смежные вопросы