2011-04-09 249 views
0

小注:我從infront的每個鏈接中刪除了http://,因爲stackoverflow不允許我以原始方式發佈它。 我寫了一個腳本,可以訪問網頁,捕捉URL並下載它。其中一個網址使curl停止工作,並且列表中的整個URL都相同。 該腳本如下: -用Bash捲曲複雜

PAGE=$(curl -sL pageurl) 
FILE_URL=$(echo $PAGE | sed -e 's/^.*<a href=\"\(.*\)\">\(.*\) alt="File" \/><\/a>.*$/\1/') 

的FILE_URL值

URL/files/PartOne - Booke (Coll).pdf 
webprod25.megashares.com/index.php?d01=3109985&lccdl=9e8e091ef33dd103&d01go=1&fln=/adobe reader exe.rar 

和SO一爲他人

當捲曲試圖抓住這個網址就說明使用調試以下錯誤bash模式

++ curl -sOL 'webprod37.megashares.com/index.php?d01=3109985&lccdl=9e8e091ef33dd103&d01go=1&fln=/adobe' reader exe.rar fileshare273.depositfiles.com/auth-13023763920cd7ec18a0fdbfa8b62d35-188.165.197.50-43792102-7713641/FS273-7/PageMaker.rar -sOLJg fileshare601.depositfiles.com/auth-1302376689013d421df6c01e7f64c8d2-188.165.197.50-43801594-82379659/FS601-2/Adobe_Flash_Player_v10.3.180.65.2.rar -sOLJg 'webprod37.megashares.com/index.php?d01=de48789&lccdl=9e8e091ef33dd103&d01go=1&fln=/KAZAMIZA.COM.Adobe.Flash' Player-10.3.180.65.Beta-2.JUDGMENT DAY.rar bellatrix.oron.com/spzsttzwytpflwd76j3ne2moukomuhcdxg6llddfztqa2ztd7cplwwp457h3mxuacq3pbxzs/An-Beat - Mentally Insine '(Original' 'Mix).mp3' 
curl: option -: is unknown 

curl: try 'curl --help' or 'curl --manual' for more information 

引用標記捲曲放i本身,我試圖做一些解決方法,如轉義網址,但它不起作用。

+0

您是否嘗試在引號中編寫參數? – StKiller 2011-04-09 20:07:09

回答

0

引用您的變量爲:

pageurl='the url' 
PAGE=$(curl -sL "$pageurl") 
FILE_URL=$(echo "$PAGE" | sed -e 's/^.*<a href=\"\(.*\)\">\(.*\) alt="File" \/><\/a>.*$/\1/') 

,否則會造成外殼擴展。錯誤「選項 - :未知」來自最後一部分:

An-Beat - Mentally Insine 

因爲你沒有申請報價給它,它得到了解析作爲參數,你可以清晰地在強調語法的代碼中看到。

1

基本問題似乎是,您使用$()擴展來看起來像多行值的東西。你應該嘗試遍歷每一行。

另一個問題看起來像是包含空格的URL的不正確引用之一。 「An-Beat - Mentally Insine」中有一個單獨的短劃線( - )

噢,還有一個問題:只有當線路上只有一個href時,纔會捕獲href =「...」內容的sed部分。如果有兩個或更多,你的\(.*\)將匹配到最後一個href。你應該使用類似href="\([^"]*\)"的東西,匹配「任何數量的非雙引號後加雙引號」。