0

問題を引き起こしている私のコードの簡略化されたビットは次のとおりです。

#!/bin/bash

SRC=${BASH_ARGV[1]}
DEST=${BASH_ARGV[0]}

err=""
RSYNC="rsync -Dgoptrl --exclude 'backup-info'"

err=`$RSYNC "$SRC" "$DEST" 2>&1 | xargs -0`;
#err=`rsync -Dgoptrl --exclude 'backup-info' "$SRC" "$DEST" 2>&1 | xargs -0`;

rsync はすべてをコピーしますが、backup-info という名前のディレクトリは除外されません。ただし、最後の行は機能します (つまり、backup-info を除外します)。私にはどちらも同じように見えますが、なぜ一方が機能し、もう一方が機能しないのかについて混乱しています。

ありがとう、アッシュ

4

1 に答える 1

2

BASH FAQ #50: 「コマンドを変数に入れようとしていますが、複雑なケースは常に失敗します!」

コマンドを配列に入れて、配列を実行します。

RSYNC=(rsync -Dgoptrl --exclude 'backup-info')
err=`"${RSYNC[@]}" "$SRC" "$DEST" 2>&1 | xargs -0`;
于 2012-08-16T08:06:27.490 に答える