【发布时间】:2015-07-17 21:35:20
【问题描述】:
我有一个脚本,它使用一些动态生成的参数调用rsync 命令,但我无法正确传递它们。
摘录如下:
logfile="$logDir/$(timestamp) $name.log"
echo "something" >> "$logfile"
params="-aAXz --stats -h --delete --exclude-from $exclude --log-file=$logfile $src $dest"
if [ "$silent" = "" ]; then
params="-v $params --info=progress2"
fi
rsync $params
如果日志文件是例如/tmp/150507 test.log,something 语句实际上是写入/tmp/150507 test.log,但rsync 将其日志写入/tmp/150507(删除第一个空白之后的所有内容)。
如果我在参数中明确引用日志文件的名称,rsync 会抛出异常:
params="-aAXz --stats -h --delete --exclude-from $exclude --log-file=\"$logfile\" $src $dest"
错误:
rsync: 无法打开日志文件 "/tmp/150507: 没有这样的文件或目录 (2)
忽略“日志文件”设置。
如何动态生成参数而不失去在文件名中使用空格的能力?
【问题讨论】:
标签: bash parameters parameter-passing