2011-07-26 89 views
30

我有一個應用程序,只有在從Windows命令提示符調用時才能正常工作。與輸入/輸出流有關。從bash腳本訪問ERRORLEVEL

所以我可以通過將它作爲參數傳遞給cmd來從bash腳本調用它。

CMD/C 「badapp」

這工作得很好 - 但偶爾badapp失敗併網的問題 - 我沒有得到任何反饋。無論如何檢查bash腳本中的ERRORLEVEl - 或者在運行bash腳本的終端上查看badapp的輸出?

回答

36

是的,$?是包含錯誤級別的變量。例如

嘗試echo $?

從Cygwin的bash的一個例子(我,因爲你是在你的榜樣使用Windows cmd猜測你正在使用Cygwin。)

[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