我試圖做一個晚期綁定我的軟件包在make命令中的目錄。基本上,WITH_OPTIONS命令行包含空格分隔的鏈接選項列表,類似於配置腳本。問題在於,在解析了此腳本的命令行之後,目錄會很晚,所以我需要評估模板字符串以獲取正確的變量綁定。我可以跟這麼多的谷歌搜索和Bash的FAQ閱讀最近的地方,尤其是第50條是這樣的:Bash變量的晚期綁定,同時保留空間
MAKE_INSTALL="make install"
TEMPLATE=('--first=$a' '--second=$b' '--third=$a')
# Parse Parameters
a=/first/path
b=/second/path
TEMPLATE_REPL=$(eval echo ${TEMPLATE[@]})
CMD="$MAKE_INSTALL WITH_OPTIONS=\"$TEMPLATE_REPL\""
$CMD
我期望什麼$ CMD包含將用一個命令和2個參數的字符串:
make install WITH_OPTIONS="--first=/first/path --second=/second/path --third=/first/path"
但是,我不能讓慶典保持報價的部分在一起,所以它保持它解析爲:
make install 'WITH_OPTIONS="--first=/first/path' '--second=/second/path' '--third=/first/path"'
這顯然是完全錯誤的,並會造成不好的合作命令行執行時。
我錯過了什麼?如何將引號之間的位保存爲一個參數,而不是3?
請記住,'make'根本不理解引號。 – 2013-04-09 21:01:08
謝謝!我想你在這裏做些什麼!我認爲,無論ennuikiller可能是正確的,Array是真實的祕密,它需要一個雙重的eval visa-vi我提供的答案。 – TimeHorse 2013-04-09 21:04:48