Обычно я достаточно быстро справляюсь с этим, но это головная боль.
У меня есть сценарий оболочки, который загружает некоторую информацию о том, где подключиться и как из текстового файла, это делается с помощью команды чтения. Это работает. Он хранит аргументы для отправки на RSync в переменной $ rsyncargs.
Я хочу использовать RSync arg -e, который используется для передачи подробностей в ssh, в моем случае номер порта, например:
rsync -avz -e "ssh -p 222" dir/ bob@server.com:dir/
строка в текстовом файле выглядит так:
-e "ssh -p 222"
строка bash должна выглядеть примерно так:
rsync -avz $rsyncargs $src $dst
это все работает, за исключением того, что кавычки путаются, и я получаю
sending incremental file list
rsync: link_stat "/dir/to/shell/script/222"" failed: No such file or directory (2)
Так что он пытается проанализировать содержимое кавычек на неправильной стадии. Я пробовал список различных механизмов экранирования (таких как обратная косая черта в текстовом файле и использование одинарных кавычек вместо двойных кавычек в нескольких местах и т. Д.), Но все это, похоже, заканчивается одинаково катастрофическими (хотя и не всегда идентичными) сообщениями об ошибках.
Будем весьма благодарны за любые предложения (либо для решения исходной проблемы, либо для изменения порта ssh менее раздражающим способом)