这类似于我在stackoverflow上看到的一些其他rsync bash变量问题,但这些答案都没有解决我的具体问题.我想在bash脚本中运行以下命令,但是变量中包含rsync选项:
rsync -ahz --delete --filter=': .rsync-filter' source/ destination/
Run Code Online (Sandbox Code Playgroud)
我注意到bash实际上解释如下:
+ rsync -ahz --delete '--filter=: .rsync-filter' source/ destination/
Run Code Online (Sandbox Code Playgroud)
哪个在rsync中也可以正常工作.
当我尝试将这些值放在变量中时,我看到正在运行以下命令:
RSYNCOPTS="-ahz --delete --filter=: .rsync-filter"
rsync ${RSYNCOPTS} source/ destination/
+ RSYNCOPTS='-ahz --delete --filter=: .rsync-filter'
+ rsync -ahz --delete --filter=: .rsync-filter source/ destination/
unexpected end of filter rule: :
RSYNCOPTS="-ahz --delete --filter=': .rsync-filter'"
rsync ${RSYNCOPTS} source/ destination/
+ RSYNCOPTS='-ahz --delete --filter='\'': .rsync-filter'\'''
+ rsync -ahz --delete '--filter='\'':' '.rsync-filter'\''' source/ destination/
Unknown filter rule: `':'
RSYNCOPTS="-ahz --delete '--filter=: .rsync-filter'"
rsync ${RSYNCOPTS} source/ destination/ …Run Code Online (Sandbox Code Playgroud)