Bash变量命令

时间:2012-08-16 08:01:18

标签: bash variables rsync

以下是导致问题的代码的简化部分:

#!/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的目录。然而,最后一行确实有效(即它确实排除了备份信息)。它们对我来说都是一样的,所以很困惑为什么一个有效,另一个没有。

谢谢, 灰

1 个答案:

答案 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`;