gpt4 book ai didi

bash - bash 变量中带有 --filter 的 rsync 命令

转载 作者:行者123 更新时间:2023-11-29 09:20:31 25 4
gpt4 key购买 nike

这类似于我在 stackoverflow 上看到的其他一些 rsync bash 变量问题,但这些答案都没有解决我的具体问题。我想在 bash 脚本中运行以下命令,但将 rsync 选项包含在变量中:

rsync -ahz --delete --filter=': .rsync-filter' source/ destination/

我注意到 bash 实际上是这样解释的:

+ rsync -ahz --delete '--filter=: .rsync-filter' source/ destination/

这在 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/
+ RSYNCOPTS='-ahz --delete '\''--filter=: .rsync-filter'\'''
+ rsync -ahz --delete ''\''--filter=:' '.rsync-filter'\''' source/ destination/
Unexpected local arg: .rsync-filter'

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/
+ RSYNCOPTS='-ahz --delete "--filter=: .rsync-filter"'
+ rsync -ahz --delete '"--filter=:' '.rsync-filter"' source/ destination/
Unexpected local arg: .rsync-filter"

我什至尝试了一些数组,看看是否有帮助:

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/
+ 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/

关于bash - bash 变量中带有 --filter 的 rsync 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21148145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com