我想rsync
从这样的变量传递一个参数:
myopts='-e "ssh -p 1234" -a'
rsync $myopts 192.168.0.1:/a /a
由于某种原因,这不起作用。我什至发现这个网页说它不起作用:
### NO NO NO: this passes three strings:
### (1) "my
### (2) multiword
### (3) argument"
MYARG="\"my multiword argument\""
somecommand $MYARG
### THIS IS NOT (!!!!) THE SAME AS ###
command "my multiword argument"
### YOU NEED ###
MYARG="my multiword argument"
command "$MYARG"
不幸的是,它没有说明为什么它不起作用。
包含rsync
调用的脚本被很多其他脚本使用,所以我只能以兼容的方式更改它。一个不起作用的解决方案是使用数组:
myopts=('-a' '-v' '-z') # new way, would work
myopts='-a -v -z' # old way, breaks
rsync "${myopts[@]}" 192.168.0.1:/a /a
变量中的选项被完全忽略。