2014-03-29 143 views
0

我正試圖在終端上執行一長串重複命令。在Mac終端中正確執行多個(wget)命令?

的命令是這樣的:

wget 'http://api.tiles.mapbox.com/v3/localstarlight.hl2o31b8/-180,52,9/1280x1280.png' -O '/Volumes/Alaya/XXXXXXXXX/Downloads/MapTiles/Tile (52.-180) 0.png' \ 
wget 'http://api.tiles.mapbox.com/v3/localstarlight.hl2o31b8/-177,52,9/1280x1280.png' -O '/Volumes/Alaya/XXXXXXXXX/Downloads/MapTiles/Tile (52.-177) 1.png' \ 

如果我整個列表複製到終端,它執行他們所有,但似乎做它使得一些只得到局部downloadeed倉促,有的錯過了完全。它似乎沒有一個接一個地等待,直到每個都完成之後再嘗試下一個。

我試圖把它們整個列表放入一個shell腳本並運行它,但由於某種原因它似乎下載了一切,但只產生一個文件,並看着輸出,它似乎試圖保存每個文件相同的文件名:

2014-03-29 09:56:31 (4.15 MB/s) - `/Volumes/Alaya/XXXXXXXX/Downloads/MapTiles/Tile (52.180) 120.png' saved [28319/28319] 

    --2014-03-29 09:56:31-- http://%20%0Dwget/ 
    Resolving \rwget... failed: nodename nor servname provided, or not known. 
    wget: unable to resolve host address ` \rwget' 
    --2014-03-29 09:56:31-- http://api.tiles.mapbox.com/v3/localstarlight.hl2o31b8/171,52,9/1280x1280.png 
    Reusing existing connection to api.tiles.mapbox.com:80. 
    HTTP request sent, awaiting response... 200 OK 
    Length: 33530 (33K) [image/jpeg] 
    Saving to: `/Volumes/Alaya/XXXXXXXX/Downloads/MapTiles/Tile (52.180) 120.png' 

    100%[======================================>] 33,530  --.-K/s in 0.008s 

    2014-03-29 09:56:31 (3.90 MB/s) - `/Volumes/Alaya/XXXXXXXX/Downloads/MapTiles/Tile (52.180) 120.png' saved [33530/33530] 

    --2014-03-29 09:56:31-- http://%20%0Dwget/ 
    Resolving \rwget... failed: nodename nor servname provided, or not known. 
    wget: unable to resolve host address ` \rwget' 
    --2014-03-29 09:56:31-- http://api.tiles.mapbox.com/v3/localstarlight.hl2o31b8/174,52,9/1280x1280.png 
    Reusing existing connection to api.tiles.mapbox.com:80. 
    HTTP request sent, awaiting response... 200 OK 
    Length: 48906 (48K) [image/jpeg] 
    Saving to: `/Volumes/Alaya/XXXXXXXX/Downloads/MapTiles/Tile (52.180) 120.png' 

    100%[======================================>] 48,906  --.-K/s in 0.01s 

    2014-03-29 09:56:31 (4.88 MB/s) - `/Volumes/Alaya/XXXXXXXX/Downloads/MapTiles/Tile (52.180) 120.png' saved [48906/48906] 

    --2014-03-29 09:56:31-- http://%20%0Dwget/ 
    Resolving \rwget... failed: nodename nor servname provided, or not known. 
    wget: unable to resolve host address ` \rwget' 
    --2014-03-29 09:56:31-- http://api.tiles.mapbox.com/v3/localstarlight.hl2o31b8/177,52,9/1280x1280.png 
    Reusing existing connection to api.tiles.mapbox.com:80. 
    HTTP request sent, awaiting response... 200 OK 
    Length: 45644 (45K) [image/jpeg] 
    Saving to: `/Volumes/Alaya/XXXXXXXX/Downloads/MapTiles/Tile (52.180) 120.png' 

    100%[======================================>] 45,644  --.-K/s in 0.01s 

    2014-03-29 09:56:31 (4.36 MB/s) - `/Volumes/Alaya/XXXXXXXX/Downloads/MapTiles/Tile (52.180) 120.png' saved [45644/45644] 

因此它節約每文件,這個名字:瓷磚(52.180)120.png

注意,它不這樣做,如果我把每個命令分開。所以我不明白它爲什麼這樣做。

有人能告訴我如何執行這個命令列表,以便它正確地執行每一個?

謝謝!

回答

2

你的文件應該是這樣的:

#!/bin/bash 
wget -q 'http://api.tiles.mapbox.com/v3/localstarlight.hl2o31b8/-180,52,9/1280x1280.png' -O 'a.png' 
wget -q 'http://api.tiles.mapbox.com/v3/localstarlight.hl2o31b8/-177,52,9/1280x1280.png' -O 'b.png' 

但是...你在每個wget年底有一個反斜槓線,這是長線的延續字符,並且您不需要。去掉它。

本質上你要求wget獲得一個文件,然後另一個文件叫做wget,然後是另一個文件,然後是另一個文件。您的腳本只能執行一個wget - 第一個。由於延續特性,所有其他wget命令都被視爲第一個wget的參數。

你這樣做:

wget URL file wget URL file wget URL file 
+0

更新的答案 - 請複製並粘貼並重試。 –

1

從日誌引用您發佈:

http://%20%0Dwget/ 

這表明你的腳本包含CR + LF行尾。執行該腳本前刪除那些:

sed $'s/\r//' scriptname 

tr -d '\r' < scriptname 
+0

謝謝,這工作。但是,它仍然試圖將所有內容保存到同一個文件中(Tile(52.180)120.png)。奇怪的是,文件大小不斷增加,即使圖像只顯示第一個圖像,就好像它只是將額外的png內容附加到原始圖像......任何想法爲什麼它不保存到wget命令中指定的每個文件名? – kinkersnick

+1

@kinkersnick ...因爲你沒有按照我在其他答案中建議的方式做? –

+0

這兩個命令似乎只是在終端窗口中列出腳本中的命令,而不是執行它們。通過從腳本的每一行中刪除'\',它現在可以運行,但正如我所說的,它只是一直添加到同一個文件中。我顯然不理解你的建議,對不起! – kinkersnick