Я часто использую эту команду для синхронизации удаленных и локальных.Как сделать псевдоним для rsync?
rsync -xyz --foo=bar some_files [email protected]:remote_dir
Так что я хочу, чтобы упростить это с псевдонимом, как это:
up_remote() {
local_files=${@:1:$((${#}-1))} # treat argument[1:last-1] as local files
remote_dir="${@[$#]}" # treat argument[last] as remote_dir
echo $local_files
echo $remote_dir
rsync -xyz --foo=bar "$local_files" [email protected]:"$remote_dir"
}
Но если я прохожу три или более аргументов он не будет работать:
up_remote local1 local2 remote_dir
Когда я отлаживать эту функцию с помощью set -x
. Я обнаружил, что функция будет генерировать rsync
следующим образом:
rsync -xyz --foo=bar 'local1 local2' [email protected]:"$remote_dir"
Обратите внимание на одинарные кавычки ('
) около local1 local2
. Если я удалю эти одинарные кавычки, то rsync
будет работать правильно, но я не знаю, как это сделать.
Любые советы приветствуются.
Используйте петлю для петли? –
Конечно, это решение и будет работать. – MoreFreeze