web-dev-qa-db-ja.com

bashスクリプトからERRORLEVELにアクセスする

Windowsコマンドプロンプトから呼び出された場合にのみ正常に動作するアプリケーションがあります。入力/出力ストリームに関係する何か。

したがって、cmdに引数として渡すことで、bashスクリプトから呼び出すことができます。

cmd/c "badapp"

これは正常に動作しますが、ネットワークの問題でbadappが失敗する場合があり、フィードバックがありません。とにかくbashスクリプトからERRORLEVElを確認する必要がありますか、またはbashスクリプトを実行している端末でbadappからの出力を確認しますか?

41
shipshape

はい、 $?は、エラーレベルを含む変数です。

echo $? 例えば。

Cygwin bashの例(例ではWindows cmdを使用しているため、Cygwinを使用していると推測します。)

susam@nifty /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.

susam@nifty/cygdrive/c/Documents and Settings/susam/Desktop
$ if [ $? -eq 0 ]
> then
>   echo "good"
> else
>   echo "bad"
> fi
bad
53
Susam Pal