Почему следующее возвращает 1:

ssh -tt server_name "sudo grep 'something' /path/to/file || [ $? = 1 ]"

Команда в двойных кавычках при запуске непосредственно на имя_сервера возвращает 0. Почему команда ssh считается неудачной?

У меня есть ключ для пользователя, настроенный на удаленном сервере. Поэтому, если я войду в систему как пользователь А на сервере А, я могу просто сделать следующее:

ssh -tt server_name

и войдите как userA на имя_сервера. Итак, я знаю, что это не проблема. Это -тт? Двойные кавычки?

1 ответ1

1

$? в двойных кавычках раскрывается локально еще до запуска ssh . Удаленный сервер, скорее всего, получает

… || [ 0 = 1 ]

и из-за этого возможен статус выхода 1 .

Обменять кавычки для передачи буквального $? Строка на сервер. Он будет расширен на удаленной стороне:

ssh -tt server_name 'sudo grep "something" /path/to/file || [ $? = 1 ]'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .