ssh -i private_linux_key user@machine "exit 1" || echo %errorlevel%
Это всегда печатает 0
. Как я могу получить реальный код ошибки, возвращаемый ssh?
||
как-то обнаруживает, что произошла ошибка.
Я нашел решение, благодаря следующему вопросу: https://stackoverflow.com/questions/11554324/batch-file-errorlevel-issue
setlocal enabledelayedexpansion
ssh -i private_linux_key user@machine "exit 1" || echo !errorlevel!
Или даже проще
ssh -i private_linux_key user@machine "exit 1"
exit %ERRORLEVEL%
Последнее возможно только в том случае, если после exit
больше нет дополнительных строк сценария
Чтобы узнать больше о enabledelayedexpansion
и различиях оболочек для windows/unix: http://blogs.msdn.com/b/oldnewthing/archive/2006/08/23/714650.aspx