我知道有關於引號的指南和答案。我已經閱讀了他們(整天),但我仍然無法讓我的簡單腳本工作。從一個變量運行一個rsync命令 - 引用不受尊敬
我已經設置了script1.sh並嘗試運行一個命令。該命令必須讀取到一個變量,所以我可以回顯它,運行它,並可能以後做其他的東西。
我的命令是
rsync -vtirn -e ssh --exclude '._*' --exclude '[email protected]*' --exclude '.DS_Store' --progress /Path/ [email protected]:/Path
它能正常工作,如果我從bash的運行它,如果我把它放在我的腳本。
如果我在中間放置了一個變量,則--excludes不再工作。
job='rsync -vtirn -e ssh --exclude '"'"'._*'"'"' --exclude '"'"'[email protected]*'"'"' --exclude '"'"'.DS_Store'"'"' --progress /Path/ [email protected]:/Path
echo $job
$job
奇怪的是,回聲顯示正是我需要的命令。如果我複製echo輸出並將其粘貼到shell中,則該命令正常工作。但以$ job開頭的命令正在省略排除項。
我一直試圖用雙引號開頭和結尾,只用雙引號轉義單引號(/')......這麼多不同的選項,但沒有考慮到我 - 排除「過濾器」參數。唯一有效的工作是
job=$(rsync -vtirn -e ssh --exclude '._*' --exclude '[email protected]*' --exclude '.DS_Store' --progress /Path/ [email protected]:/Path)
但隨着這個命令啓動,只要變量設置。
在此先感謝您的幫助
這在[BashFAQ#50](http://mywiki.wooledge.org/BashFAQ/050)中詳細討論。 –