#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$$
Комментариев нет:
Отправить комментарий