У меня проблема с тем, что man-страница для 'ssh' говорит, что она возвращает код завершения процесса, который она запускает, но я не могу заставить его вернуть ненулевой код ошибки.Со страницы руководства ssh:
The session terminates when the command or shell on the remote machine
exits and all X11 and TCP/IP connections have been closed. The exit sta‐
tus of the remote program is returned as the exit status of ssh.
Это не похоже на правду.
Но я бы попробовал что-то подобное и посмотрел бы, что происходит в вашей системе.
% ssh localhost bash -c "exit 3" ; echo $?
0
Когда я запускаю подобную команду локально, bash возвращает код выхода.
% bash -c 'exit 3' ; echo $?
3
Двойные кавычки будут удалены до того, как ssh покажет команды.Итак, давайте попробуем больше цитат.
% ssh localhost bash -c "'exit 3'" ; echo $?
3
Бинго.«Выход 3» превращался в «выход», за которым следовало пропущенное слово в командной строке bash.Таким образом, bash запускал команду «exit».
К сожалению для меня, я думаю, что весь этот ответ является отступлением от оригинальных вопросов и не содержит достаточных заслуг как вопроса как такового.Спасибо всем за помощь в ответе на дополнительный вопрос (не связанный с исходным вопросом).