2011-07-26 9 views
30

私は、Windowsコマンドプロンプトから呼び出されたときに正しく動作するアプリケーションを持っています。入出力ストリームと何かbashスクリプトからERRORLEVELにアクセス

私はそれをcmdの引数として渡すことでbashスクリプトから呼び出すことができます。

CMD/C "badapp"

これは正常に動作します - しかし、時折badappは、ネットワークの問題で失敗する - と私はフィードバックを得るません。とにかく、ERRORLEVE1をbashスクリプトからチェックするか、または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

関連する問題