正确的方法是使用数组。
-a
应该已经暗示
-o
.
RSYNC_CMD="/usr/bin/rsync"
DST='root@some.server.com:'
DST_KEY='/path/to/sshKey.rsa'
RSYNC_FLAGS=(-az --rsh="/usr/bin/ssh -i ${DST_KEY}")
SRC=${1}
TARG="${DST}$SRC"
${RSYNC_CMD} "${RSYNC_FLAGS[@]}" "${SRC}" "${TARG}"
使用
RSYNC_RSH
而不是
--rsh
,可以在设置变量值之前导出该变量。这至少可以让您将导出放在设置其余标志的同一区域。然后,您可以推迟完成它的值,直到您有了正确的标识文件之后。
RSYNC_CMD="/usr/bin/rsync"
export RSYNC_RSH="/usr/bin/ssh -i %s"
RSYNC_FLAGS=( -a -z )
DST='root@some.server.com:'
DST_KEY='/path/to/sshKey.rsa'
RSYNC_RSH=$( printf "$RSYNC_RSH" "$DST_KEY" )
SRC=${1}
TARG="${DST}$SRC"
${RSYNC_CMD} "${RSYNC_FLAGS[@]}" "${SRC}" "${TARG}"