Передача цитируемых аргументов в xterm - PullRequest
0 голосов
/ 29 марта 2020

Было много сообщений о вложенных кавычках, которые были полезны, но недостаточны. Я пытаюсь построить скрипт в следующих строках

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) это ужасный код. Кто-нибудь может посоветовать, пожалуйста, как это сделать правильно? Большое спасибо

...