2017-09-02 88 views
0

我有一個名爲「blocked.txt」文件,其中包含4000頁的文件象下面這樣:如何轉義字符如冒號:和逗號,for循環?

1502146676.VdeI4b5c5cbM804631.vps47619.domain.local:2, 
1502146676.VdeI4b5c5cdM808282.vps47619.domain.local:2, 
1502146677.VdeI4b5c5d3M192892.vps47619.domain.local:2, 
1502146677.VdeI4b5c5d7M213070.vps47619.domain.local:2, 
1502146677.VdeI4b5c5e5M796312.vps47619.domain.local:2, 
1502146678.VdeI4b5c5efM412992.vps47619.domain.local:2, 
1502146678.VdeI4b5c5f1M613275.vps47619.domain.local:2, 
1502146679.VdeI4b5c5f8M11301.vps47619.domain.local:2, 
1502146682.VdeI4b5c66dM115848.vps47619.domain.local:2,S 
1502146682.VdeI4b5c676M608733.vps47619.domain.local:2, 
1502146685.VdeI4b5c69aM1652.vps47619.domain.local:2, 
.... 
.... 

我跑以下命令外殼上的文件複製到/ tmp/backup目錄

for i in `cat blocked.txt`; do cp -f "${i}" /tmp/backup/ ; done 

但這給了我錯誤「你想覆蓋?y/n」,即使我已經使用-f與cp

任何想法什麼是錯誤的命令?

+0

我用你的代碼,我不能重現(使用Linux和bash)。當我們嘗試多次時,文件被正確複製並且沒有錯誤信息 –

回答

1

你可能有一個別名,

alias cp="cp -i" 

或功能

cp() { 
    command cp -i "[email protected]" 
} 

該干擾。

爲了解決這個問題,只需使用command cp,而不是僅僅cp

while read -r name; do 
    command cp "$name" /tmp/backup 
done <blocked.txt 

或指定的完整路徑cp

while read -r name; do 
    /bin/cp "$name" /tmp/backup 
done <blocked.txt