#unix #shell #символы #экранирование
Задача:
Переменная, содержит в конце $$
$ a='SYS_$$'
$ echo $a
SYS_$$
Тут разворачивает $$ в конце строки как номер процесса, а надо отобразить строку
"SYS_$$", передаваемую как параметр.
$ echo "echo \$1" | ssh another_host "/bin/sh -s $a"
SYS_18992
Ответы
Ответ 1
Попробуйте так: $ a='SYS_$$' $ echo 'echo $1' | ssh another_host "/bin/sh -s '$a'" SYS_$$ При вызове ssh, внутри двойных кавычек одиночные кавычки тетряют своё специальное назначение и переменная $а будет замещена её значением, т.е. $SYS_$$. Далее, при вызове sh на удалённом хосте, одиночные кавычки вновь приобретают своё специальное назначение и препятствуют замещению $$ текущим pid.Ответ 2
надо передать символы одинарных кавычек вокруг аргумента, с которым вызывается программа sh. для этого надо добавить перед кавычками символы \: $ v='a$$'; echo 'echo $1' | ssh хост sh -s \'$v\' a$$
Комментариев нет:
Отправить комментарий