0

いくつかのファイルをリモート ホストと同期するスクリプトがあります。発行したいコマンドは次の形式です

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ます~か?

4

2 に答える 2

1

ループする必要はありません。次のようにするだけです。

rsync -avz ~/.alias/* 'user@y:~/.alias/'

編集:次のことができます:

files=(.alias .vimrc)

for file in "${files[@]}"; do
    rsync -avz ~/"${file}" 'user@server:~/'"${file}"
done
于 2014-11-18T10:30:22.553 に答える