2013-03-26 64 views
0

在以下shell腳本中,我無法設置帶有空格的用戶代理。我正在分詞。第一空間(即「(Macintosh的;」後位)是由捲曲解釋爲URLWord拆分選項替換

如果我在鍵入到控制檯它的工作不錯,但不是當我使用替換

PARAMS="-v" 
PARAMS="${PARAMS} --user-agent \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.28.10 (KHTML, like Gecko)\"" #does not work 
#PARAMS="${PARAMS} --user-agent \"Mozilla/5.0\"" #works 

curl ${PARAMS} $1 > results.txt 

是否有人可以解釋爲什麼

+0

嘗試在dbl引號內使用單引號將用戶代理「分組」。即'PARAMS =「$ {PARAMS} ....'mozz ....'」'祝你好運。 – shellter 2013-03-26 21:43:14

回答

1

該問題在Bash FAQ

中解釋該解決方案語法略有不同。

PARAMS=(-v) 
PARAMS+=("-A Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.28.10 (KHTML, like Gecko)") 
curl "${PARAMS[@]}" $1 > results.txt 
-1

嘗試用%替代空間20

,如果你想喜歡,你可以在腳本中做到這一點:?

str_replace (' ', '%20', 'what you need here'); 

希望這會有所幫助。

0

從這裏:http://wiki.bash-hackers.org/syntax/quoting

這些引號(」雙引號和」,單引號)是影響解析語法元素,它不涉及到作爲文本傳遞給最終的引號字符。命令行!語法引號被刪除被稱爲命令之前!

所以有cmd "my args"myargs="\"my args\""; cmd $myargs之間的根本區別。