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