Diese wget- und cURL-Befehle funktionieren in der Befehlszeile, aber nicht in einem Bash-Skript

Diese wget- und cURL-Befehle funktionieren in der Befehlszeile, aber nicht in einem Bash-Skript

Ich versuche, Bilder von einer Website herunterzuladen und habe Folgendes versucht:

curl -o img.jpg (URL)
wget (URL) -O img.jpg
wget --save-headers -U "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.17  (KHTML,   Gecko) Ubuntu/11.04 Chromium/11.0.654.0 Chrome/11.0.654.0  Safari/534.17" (URL) -O img.jpg

In jedem Fall funktioniert der Befehl, wenn ich ihn normal im Terminal ausführe. Sobald ich jedoch versuche, ihn in ein Bash-Skript einzubinden, wird das Image beschädigt und es erscheint die folgende Meldung:

Error interpreting JPEG image file (Not a JPEG file: starts with 0x48 0x54).

Das Skript:

#!/bin/bash
#I pass the url as a parameter - http://img1.goodfon.su/wallpaper/original/f/c3/les-eli-lokomotiv-noch-sneg.jpg

#wget --save-headers -k -U "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.17  (KHTML,   Gecko) Ubuntu/11.04 Chromium/11.0.654.0 Chrome/11.0.654.0  Safari/534.17" $1 -O img.jpg
#curl -o img.jpg $1
wget $1 -O img.jpg

avconv -framerate 25 -f image2 -i img.jpg -c:v h264 -crf 1 out.mov

Antwort1

Die beiden Hex-Zahlen in

Not a JPEG file: starts with 0x48 0x54

in ASCII übersetzen, HTwas, wie ich vermute, weiterhin funktioniert HTTP[...]. Überprüfen Sie den Header der Datei mit xxd -l 20 img.jpg. Dies ist die zu erwartende Ausgabe des letzten von Ihnen geposteten Befehls, da

wget --save-headers

weist an , der Ausgabe den Header der Antwort wgetvoranzustellen .HTTP

Die beiden anderen Aufrufe tun dies nicht.


Ich habe gerade Ihr Skript getestet und es funktioniert entweder mit curloder wget. Zum wgetHerunterladen der Datei ist ein Benutzerstring -Uerforderlich, sonst lehnt der Server ab. Verwenden Sie entweder

curl -o img.jpg $1

oder

wget -U "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.17  (KHTML,   Gecko) Ubuntu/11.04 Chromium/11.0.654.0 Chrome/11.0.654.0  Safari/534.17" $1 -O img.jpg

ohne --save-headers.

verwandte Informationen