2011-03-14 66 views
1

我已經編寫了一個非常簡單的bash腳本來同步文件,但是當參數爲:-e「ssh -p時,我無法正確讀取參數1234" 。我意識到我需要擺脫引號才能讓這些顯示正確,所以:-e \「ssh -p 1234 \」,但-e被忽略。我試着引用它,如果我回顯出$ option,它會顯示出來,但它仍然無法正常工作。任何意見,我做錯了將不勝感激。bash腳本以連字符開頭的命令行參數被忽略

#!/bin/bash 
host=`hostname -s` 
if [ "$host" = "machine1" ]; then 
     transfer_to="machine2"; 
else 
     transfer_to="machine1"; 
fi 

# use $option when passing in. i.e --delete, -e "ssh -p 1234" 
option="[email protected]" 
rsync -va $option /var/sync_dir/ $transfer_to:/var/sync_dir --progress 

回答

1

你應該直接使用[email protected]或將其複製到一個數組:

rsync -va "[email protected]" /var/sync_dir/ $transfer_to:/var/sync_dir --progress 

option=("[email protected]") 
rsync -va "${option[@]}" /var/sync_dir/ $transfer_to:/var/sync_dir --progress 
+0

謝謝!!!!!! – Dan 2011-03-14 19:31:10

+1

@Dan:如果您發現此答案有幫助,請將其標記爲已接受。 – 2011-03-14 19:42:36