Страницы

Поиск по вопросам

среда, 9 января 2019 г.

Экранирование специалных символов для аргументов SSH команды

Задача:
Переменная, содержит в конце $$
$ a='SYS_$$'
$ echo $a
SYS_$$ Тут разворачивает $$ в конце строки как номер процесса, а надо отобразить строку "SYS_$$", передаваемую как параметр.
$ echo "echo \$1" | ssh another_host "/bin/sh -s $a"
SYS_18992


Ответ

Попробуйте так:
$ a='SYS_$$' $ echo 'echo $1' | ssh another_host "/bin/sh -s '$a'"
SYS_$$
При вызове ssh, внутри двойных кавычек одиночные кавычки тетряют своё специальное назначение и переменная $а будет замещена её значением, т.е. $SYS_$$ Далее, при вызове sh на удалённом хосте, одиночные кавычки вновь приобретают своё специальное назначение и препятствуют замещению $$ текущим pid.

Комментариев нет:

Отправить комментарий