1
在我的bash腳本我有這個變量,包含一個目錄列表從tar
排除在外,再加上他們的父目錄中的一個進行處理:如何「扁平」列表變量?
EXLIST="\
--exclude='/data/sub1/*' \
--exclude='/data/sub2/*' \
--exclude='/data/sub3/*' \
/data \
"
echo ${EXLIST} | /usr/bin/xargs -0 tar -cf _data.tar
然而,焦油懦弱拒絕創建一個空的檔案,因爲什麼替代${EXLIST}
後真的接收到的是:
echo --exclude='/data/sub1/*' | /usr/bin/xargs -0 tar -cf /home/_data.tar
告訴我,新行的方式獲得?
我當然可以將EXLIST
定義爲一條長線,但我不喜歡,因爲這會使列表不易讀。
有沒有辦法,在bash,把這些行「扁化」爲一個字符串,這樣tar
可以處理它嗎?
實際上,我的基於字符串的EXLIST和基於數組的EXLIST **之間唯一的區別是,在回顯**時,2個空格(在我的)和1個(在你的)之間。但是......您的回答幫助我解決了將'$ {EXLIST}'作爲參數傳遞給另一個不帶引號的腳本的問題。一旦我將'$ {EXLIST [@]}'改爲'「{{EXLIST [@]}」'',這兩種形式都運行得很好。所以接受你的答案。 – ateiob 2012-02-23 21:41:50
@ateiob我認爲你可能會誤解引號和數組是如何工作的。回顯時輸出的內容與傳遞給命令的參數不一樣。我建議閱讀以下內容:http://mywiki.wooledge.org/Quotes http://mywiki.wooledge.org/BashFAQ/005 – jordanm 2012-02-23 21:49:18
你說的就是我在評論中所說的話......沒有誤會。謝謝。 – ateiob 2012-02-24 05:05:20