errori wget rompe script di shell - come prevenire questo?
-
22-08-2019 - |
Domanda
Ho un file enorme con un sacco di link a file di vario tipo da scaricare. Ogni linea è uno dei comandi di download come:
wget 'URL1'
wget 'URL2'
...
e ci sono migliaia di quelli.
Purtroppo alcuni URL sembrano davvero brutta, come ad esempio: http: //www.cepa .org.gh / archives / ricerca-lavoro-carte / WTO4% 20 (1) -charles.doc Si apre OK in un browser, ma confonde wget.
sto ottenendo un errore:
./ tasks001.sh: linea 35: errore di sintassi nei pressi di token imprevisto `1'
./ tasks001.sh: linea 35: `wget ' http://www.cepa.org.gh/archives/research-working-papers/WTO4%20 (1) -charles.doc ''
Ho provato sia URL e modi di specificare cosa scaricare 'URL'.
C'è un modo per fare uno script del genere in esecuzione automatica? Sto bene, se ti basta saltare il file non potrebbe scaricare.
Soluzione
Credo che è necessario utilizzare virgolette ( ") e non virgolette singole ( ') attorno alla URL.
Se questo ancora non funziona, provare a sfuggire alla caratteri paren (
e )
con un backslash: \(
e \)
Quali guscio stai usando? Bash? zsh?
Altri suggerimenti
Non (ab) usare la shell.
Salva gli URL di qualche file (diciamo my_urls.lst) e fare:
wget -i my_urls.lst
Wget gestirà citando ecc su di essa la propria
Questa non è esattamente rispondere alla tua domanda, ma:
Entrambi i seguenti comandi lavorano direttamente in una shell bash:
wget "http://www.cepa.org.gh/archives/research-working-papers/WTO4%20(1)-charles.doc"
e
wget 'http://www.cepa.org.gh/archives/research-working-papers/WTO4%20(1)-charles.doc'
Si può verificare se uno di questi lavoro per voi?
Ciò che sembra accadere è che la shell sta facendo qualcosa con i (caratteri. Vorrei provare a utilizzare le virgolette doppie "invece di singoli apici 'intorno al vostro URL.
Se si desidera eliminare gli errori è possibile utilizzare un> / dev / null sotto Unix di reindirizzare l'output standard o 2> / dev / null per reindirizzare errore standard. In altri sistemi operativi, può essere qualcosa di diverso.