选项在变量中时rsync备份脚本失败

时间:2016-08-27 20:15:12

标签: bash shell variables rsync brace-expansion

我想使用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

我做错了什么?

1 个答案:

答案 0 :(得分:2)

检查man bash中扩展的顺序:首先发生大括号扩展,稍后发生变量扩展。因此,变量中的大括号不会扩展。

您可以使用数组捕获值,使用已在赋值中的扩展:

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