以下是导致问题的代码的简化部分:
#!/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的目录。然而,最后一行确实有效(即它确实排除了备份信息)。它们对我来说都是一样的,所以很困惑为什么一个有效,另一个没有。
谢谢, 灰
答案 0 :(得分:2)
BASH FAQ #50: "I'm trying to put a command in a variable, but the complex cases always fail!"
将命令放在数组中,然后执行数组。
RSYNC=(rsync -Dgoptrl --exclude 'backup-info')
err=`"${RSYNC[@]}" "$SRC" "$DEST" 2>&1 | xargs -0`;