Обычно я решаю такие вещи достаточно быстро, но тут просто головная боль.
У меня есть сценарий оболочки, который загружает некоторую информацию о том, куда и как подключиться из текстового файла, это делается с помощью команды чтения. Это работает. Аргументы для отправки в RSync хранятся в вызове переменной $rsyncargs.
Я хочу использовать RSync arg -e, который используется для передачи данных по ssh, в моем случае это номер порта:
rsync -avz -e "ssh -p 222" dir/ [email protected]: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 менее раздражающим способом)