3
這與我在stackoverflow上看到的其他一些rsync bash變量問題類似,但沒有一個答案解決了我的特定問題。我想運行一個bash腳本下面的命令,但必須包含在一個變量rsync的選項:rsync命令與bash變量中的--filter
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: `':'
所以我錯過了什麼?
+1。這是[bash faq 50](http://mywiki.wooledge.org/BashFAQ/050) –
就是這樣。我很高興看到我在2個角色中獲得了正確的答案。 :-/ 謝謝! –