2014-01-18 14 views
2

目錄:rsync如何使用空格排除數組中的所有數據?

$ cd /source/xxx/ && find deleteme/ 
deleteme/ 
deleteme/file 
deleteme/ex me 
deleteme/ex me/nono 
deleteme/ex me/nono/a 
deleteme/ex me/touch 

腳本:

#!/bin/bash 

SOURCE=/source/xxx/deleteme/ 
TARGET=/media/xxx/ 
EXCLUDE=("ex me/*") 
INCLUDE=("ex me/touch") 


for i in "${!EXCLUDE[@]}" 
do 
    EXCLUDE[i]="--exclude=${EXCLUDE[i]}" 
done 

for i in "${!INCLUDE[@]}" 
do 
    INCLUDE[i]="--include=${INCLUDE[i]}" 
done 

rsync -avR --delete ${INCLUDE[@]} ${EXCLUDE[@]} "${SOURCE}" "${TARGET}" 

結果:

$ cd /media/xxx/ && find deleteme/ 
deleteme/ 
deleteme/ex me 
deleteme/ex me/nono 
deleteme/ex me/nono/a 
deleteme/ex me/touch 
deleteme/file 

預期結果:

$ cd /media/xxx/ && find deleteme/ 
deleteme/ 
deleteme/ex me 
deleteme/ex me/touch 
deleteme/file 

問題

如何獲得預期的結果?

沒有空間「exme」它的工作原理。

回答

3

你錯過了實際rsync的調用報價:

rsync -avR --delete "${INCLUDE[@]}" "${EXCLUDE[@]}" "${SOURCE}" "${TARGET}" 
#...................^.............^.^.............^ 

這是讓慶典的陣列擴展到其元素至關重要。

+0

謝謝,這工作! – Stuck

相關問題