2016-08-27 10 views
0

増分バックアップにrsyncを使用したい。オプションが変数内にある場合、rsyncバックアップスクリプトが失敗する

SRC="/" 
TRG="/backup/" 
LNK="/oldbackup/" 
OPT="-a --exclude={/dev,/proc,/sys,/tmp,/run,/mnt,/media,/lost+found} --link-dest=$LNK" 

rsync $OPT $SRC $TRG 

しかし、このように動作します:しかし、私はこのようにそれをしようとすると失敗する

SRC="/" 
TRG="/backup/" 
LNK="/oldbackup/" 

rsync -a --exclude={/dev,/proc,/sys,/tmp,/run,/mnt,/media,/lost+found} --link-dest=$LNK $SRC $TRG 

は私が間違って何をしたのですか?

+0

は意味が失敗します? – heemayl

答えて

2

man bashで展開の順序を確認してください。最初に中括拡張が行われ、後で可変拡張が行われます。したがって、変数の中カッコは展開されません。

あなたは割り当てですでに拡張を使用し、値をキャプチャするために、配列を使用することができます。

opts=(-a --exclude={/dev,/proc,/sys,/tmp,/run,/mnt,/media,/lost+found} --link-dest="$LNK") 
rsync "${opts[@]}" "$SRC" "$TRG" 
+0

非常に良い。 +1。関連情報については、OPは[私は変数にコマンドを入れようとしていますが、複雑なケースは常に失敗します!](http://mywiki.wooledge.org/BashFAQ/050) – John1024

関連する問題