Аргументы команды sh игнорируются при использовании с ssh - PullRequest
0 голосов
/ 29 октября 2019

В следующей команде первый аргумент sh команды echo hey игнорируется:

$ ssh localhost sh -c 'echo hey; echo ho'

ho

Почему?

1 Ответ

2 голосов
/ 29 октября 2019

Ваша командная строка:

ssh localhost sh -c 'echo hey; echo ho'

ssh запускает оболочку на localhost и передает ей командную строку:

sh -c echo hey; echo ho

Оболочка на localhost видит две команды. Оба работают нормально.

Проблема в том, что первая команда: sh -c echo hey

Опция -c указывает sh выполнить следующий аргумент. Следующий аргумент echo. Чужой аргумент hey игнорируется.

Чтобы исправить вашу проблему, либо измените цитату, либо просто не запускайте избыточную оболочку:

ssh localhost "sh -c 'echo hey; echo ho'"

ssh localhost 'echo hey; echo ho'

Основная путаница, вероятно, заключается в том, что ssh объединяет все неопциональные аргументы, которые он получает, в одну строку, которую он передает удаленной оболочке для выполнения.

...