いくつかのファイルをリモート ホストと同期するスクリプトがあります。発行したいコマンドは次の形式です
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
上記の代わりに。ただし、ホーム ディレクトリへのパスは、サーバー上とローカルで同じであるとは限りません。たとえばsed
、この部分を置き換えるために使用できますが、パスがすべて異なる複数のサーバーに対してこれを行うのは非常に面倒です。~
スクリプトの実行中に展開されずに使用する方法はありrsync
ます~
か?