Код выхода 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 ]'
Другие вопросы по тегам