Было много сообщений о вложенных кавычках, которые были полезны, но недостаточны. Я пытаюсь построить скрипт в следующих строках
ssh simon@IPaddress "xterm -title "$title" -e 'setenv TITLE "$title" ; tcsh' "
, который, очевидно, не будет работать из-за проблемы с вложенностью.
Кажется, что инструмент выбора для этого printf
, но это не совсем подходит. Вот некоторый гротескный код, который успешно открывает xterm
, но я не могу понять, как показать, чтобы встроить его в вызов ssh
. Причина, по которой я выполняю все замены tr
, заключается в том, что я не могу понять, как остановить printf
от преобразования двойных кавычек в \"
и одинарных кавычек в \'
#!/bin/bash
printf -v dateStr '%q ' `date +"%H:%M %a"`
printf -v title '%q ' @FOO ${dateStr}@
printf -v specs '%q ' -j +l -sb -title $title
printf -v command '%q ' xterm $specs -e Z setenv TITLE $title Y tcsh Z
command=`echo $command | tr 'Y' ";"`
command=`echo $command | tr '@' '"'`
command=`echo $command | tr 'Z' "'"`
command=`echo $command | tr -d '\'`
eval $command
. Код успешно открывает xterm
с правильным заголовком и правильно установленной переменной среды. Но а) он выбрасывает предупреждение о обратной косой черты; б) я не могу передать это команде ssh
и c) это ужасный код. Кто-нибудь может посоветовать, пожалуйста, как это сделать правильно? Большое спасибо