Код выхода 1 из команды SSH
Почему следующее возвращает 1:
ssh -tt server_name "sudo grep 'something' /path/to/file || [ $? = 1 ]"
Команда в двойных кавычках при запуске непосредственно на имя_сервера возвращает 0. Почему команда ssh считается неудачной?
У меня есть ключ для пользователя, настроенного на удаленном сервере. Поэтому, если я войду в систему как пользователь А на сервере А, я могу просто сделать следующее:
ssh -tt server_name
и войдите как userA на имя_сервера. Итак, я знаю, что это не проблема. Это -тт? Двойные кавычки?
1 ответ
Решение
$?
в двойных кавычках раскрывается локально перед ssh
даже начинается. Удаленный сервер, скорее всего, получает
… || [ 0 = 1 ]
и из-за этого статус выхода 1
возможно.
Обмен цитаты, чтобы передать буквальное $?
Строка на сервер. Он будет расширен на удаленной стороне:
ssh -tt server_name 'sudo grep "something" /path/to/file || [ $? = 1 ]'