我一直在閱讀關於bash在這裏和其他地方的報價,但我沒有幫助解決這個問題。與eval,變量和引號bash問題
事情是,我有一個腳本來做循環中的備份。
如果我不使用eval
那麼我在rsync
中遇到$OPTIONS
變量的問題。
但是,如果我不使用eval
那麼問題轉到變量$CURRENT_DIR
...
的rsync返回以下消息:「意外的地方ARG:/路徑/與」
我已經想盡引用變量$CURRENT_DIR
CURRENT_DIR="/path/with spaces/backup"
DIR="dir_by_project"
f=":/home/project_in_server"
OPTIONS="-avr --exclude 'public_html/cms/cache/**' --exclude 'public_html/cms/components/libraries/cmslib/cache/**' --delete"
eval rsync --delete-excluded -i $OPTIONS [email protected]$f $CURRENT_DIR/xxx/$DIR/files
的方式是沒有辦法,我可以使用變量$CURRENT_DIR
不會因空間問題什麼辦法?
它的工作,但我不知道爲什麼?我想這與分詞有關。你能否在你的回答中多說一點? [編輯]我想我現在明白了。我使用了eval,因爲我希望$ OPTIONS被分割,並且CURRENT_DIR也被分割了。當eval運行時,首先刪除引號... – Cesar 2011-03-10 00:21:00
感謝您的澄清! – Cesar 2011-03-10 00:31:23