да, $?
- это переменная, которая содержит уровень ошибки.
Попробуйте, например, echo $?
.
Пример из Cygwin bash (полагаю, вы используете Cygwinпотому что вы используете Windows cmd
в вашем примере.)
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