Shell(/bin/bash
)將單引號添加到從for
循環中的文件讀入的變量中,並導致rsync
失敗。Shell將單引號添加到rsync失敗的變量
我有一個shell腳本做一堆rsync
s。輸入文件看起來是這樣的: /home/account/this
子目錄
的for循環看起來是這樣的:
IFS=$'\n'
for SOURCE_DEST in `cat file_list`
do
rsync -av -e 'ssh -p 2222' [email protected]:$SOURCE_DEST
done
沒有IFS=$'\n'
,默認導致$SOURCE_DEST
只包含:的 /home/account/this
代替/home/account/this subdirectory
。
但是,當我使用IFS=$'\n'
運行此腳本時,它會在$SOURCE_DEST
周圍提供單引號,例如:'[email protected]:/home/account/this subdirectory'
,這會導致rsync失敗並執行奇怪的操作。
例子:
rsync --delete-after -av -e 'ssh -p 2222' '[email protected]:/home/account/this subdirectory'
其失敗,我需要的是這個沒有單引號:
rsync --delete-after -av -e 'ssh -p 2222' [email protected]:/home/account/this subdirectory
如果我正確地閱讀了這個問題,'$ {SOURCE_DEST}'應該是'/ home/account /這個子目錄',它包含一個空格。 – Johnsyweb 2012-02-01 19:46:41
嗯。你可能是對的 - 起初我想過,但不知道如何理解它。如果是這樣,不應該更難。那麼我也會更新解決方案。 – FatalError 2012-02-01 19:52:16
是的,應該有一個空間,因爲它將源路徑複製到DEST路徑。 – 2012-02-01 21:22:35