我試圖用一個字符串變量(包含多個帶引號的單詞)作爲命令的參數。如何將引用的多字字符串替換爲參數?
因此,給定以下示例腳本(注意在認領,這導致要記錄到stderr輸出的-x),
#!/bin/bash -x
myArg="\"hello\" \"world\""
echo "string is:" $myArg
exit
這使我們,
+ myArg='"hello" "world"'
+ echo 'string is:' '"hello"' '"world"'
string is: "hello" "world"
+ exit
第二行顯示實際傳遞給命令的內容; bash已將單引號添加到字符串中的每個單詞。如果我反而引用「$ myArg」,那麼對於整個字符串而不是每個字都會發生同樣的情況。
現在,設想一下,我們將字符串傳遞給程序,其中一些參數需要引用模式,例如"*"
(不能由shell擴展),而不是echo
。
爲了澄清,我不想擴張過程中添加的所有單引號。我怎麼能做到這一點?
你在做什麼?除非你用'eval'做了一件壞事,否則傳遞給程序的字符串是否包含'「*」'或'*'應該不重要。 – Sorpigal 2012-02-28 15:25:07
對於任何一個感到困惑的人:請注意shebang中的'-x',它會導致輸出被記錄。 – user123444555621 2012-02-28 15:39:01
@ Pumbaa80,的確,我已經補充說明了這個問題。 – 2012-02-28 15:50:53