我有一个脚本,它与远程主机同步一些文件。我要发出的命令的形式是
rsync -avz ~/.alias user@y:~/.alias
我的脚本如下所示:
files=(~/.alias ~/.vimrc)
for file in "${files[@]}"; do
rsync -avz "${file}" "user@server:${file}"
done
但是~
总是被扩展,事实上我调用了命令
rsync -avz /home/user/.alias user@server:/home/user/.alias
而不是上面那个。但是主目录的路径在本地不一定与服务器上的相同。我可以使用 egsed
来替换这部分,但是对于具有所有不同路径的多个服务器执行此操作非常繁琐。有没有一种方法可以~
在脚本运行时不扩展它的情况下使用,但仍然rsync
理解主目录的含义~
?