2014-01-15 55 views
0

我嘗試使用for循環下載使用wget的東西bash腳本:字符串操作和變量在bash腳本

當我不使用變量的一切工作正常,當我爲它分配到變量我有500 server error。這對我來說很奇怪,因爲這只是複製粘貼。

我想要做的是從循環i採取數字,並將其粘貼到身體。

這裏是我的代碼:

#!/bin/bash 
for i in {1..5} 
do 
    STR="some_static_stuff_before"$i"some_static_suff_after" 
    echo $STR 
    wget -O ready/page$i.aspx --header="Host: www.something.com" --header="Pragma: no-cache" --header="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" --header="Accept-Language: en-en" --header="Accept-Encoding: gzip, deflate" --header="Content-Type: application/x-www-form-urlencoded" --header="Origin: http://something.com" --header="Connection: keep-alive" --header="User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.73.11 (KHTML, like Gecko) Version/7.0.1 Safari/537.73.11" --header="Referer: http://www.something.com/something.aspx" --header="Cookie: ASP.NET_SessionId=u5cmt0figi4bvs40a30gnwsa; __utma=20059042.38323768.1389369038.1389710153.1389780868.6; __utmb=20059042.2.10.1389780868; __utmc=20059042; __utmz=20059042.1389627823.2.2.utmcsr=something.com|utmccn=(referral)|utmcmd=referral|utmcct=/something.aspx" --post-data='"$STR"' http://something.com/something.aspx 
done 

當我直接粘貼對象--post-data存在與下載內容沒有問題。

我試過--post-data= "/"$STR/""--post-data='"$STR"',但仍然無法正常工作。

+0

你爲什麼不這樣做簡單的--post數據= 「$ STR」? –

+3

你爲什麼試試--post-data =「/」$ STR /「」?這是一個錯字嗎?你的意思是--post-data =「\」$ STR \「」? – kbulgrien

+0

是的,有一個錯字。但沒有解決問題。 – Kuba

回答

0

您可以單引號引用變量引用(除雙引號外),它可以防止替換變量值。

而不是

--post-data='"$STR"' 

使用

--post-data="$STR" 
+0

沒有工作。仍然是500錯誤。這對我沒有任何意義 – Kuba

+0

@Kuba:變量值本身是否需要包含雙引號?如果是這樣,請嘗試'--post-data =「\」$ STR \「」'。 – mklement0