ubuntuusers.de

Batchskript für Stream download

Status: Gelöst | Ubuntu-Version: Ubuntu 10.10 (Maverick Meerkat)
Antworten |

dbk-hubert

Avatar von dbk-hubert

Anmeldungsdatum:
5. September 2007

Beiträge: 287

Wie schreibt man ein Shell Skript was was den Download aus der ZDF Mediathek automatisiert? Der manuelle Befehl sieht so aus:

mplayer -dumpstream http://wstreaming.zdf.de/zdf/veryhigh/101024_ozeane3_vafzu_tex.asx -dumpfile ./ozeane3.wmv

Bis jetzt konnte ich mir folgendes zusammenreimen was natürlich nicht funktioniert, weil ich keine Ahnung hab.

#!/bin/bash
#!/bin/bash
while read line
do	
	echo mplayer -dumpstream $line -dumpfile $datei
	datei= echo $line | awk -F "_" '{print $2}'
done < quelle.txt

Warum steckt dann der Dateiname bei der Testausgabe in einer neuen Zeile?

mplayer -dumpstream http://wstreaming.zdf.de/zdf/veryhigh/090925_hinweis_fsk16.asx -dumpfile
hinweis
mplayer -dumpstream http://wstreaming.zdf.de/zdf/veryhigh/100321_neuschwanstein_tex.asx -dumpfile
neuschwanstein
mplayer -dumpstream http://wstreaming.zdf.de/encoder/livestream2_vh.asx -dumpfile
vh.asx
mplayer -dumpstream http://wstreaming.zdf.de/zdf/veryhigh/100328_frauenkirche_tex.asx -dumpfile
frauenkirche
mplayer -dumpstream http://wstreaming.zdf.de/zdf/veryhigh/100314_koelnerdom_tex.asx -dumpfile
koelnerdom
mplayer -dumpstream -dumpfile

FromBodom

Avatar von FromBodom

Anmeldungsdatum:
6. April 2009

Beiträge: 74

Wohnort: Berlin

Hi dbk-hubert schrieb:

Warum steckt dann der Dateiname bei der Testausgabe in einer neuen Zeile?

weil du da ein echo in der Zeile hast.

setze mal um das was du in datei schreiben willst so genannte Backticks

1
datei=`echo $line | awk -F "_" '{print $2}'`

hier bei wird echo erst ausgeführt und dann das Ergebnis in die variable datei umgelenkt.

dbk-hubert

(Themenstarter)
Avatar von dbk-hubert

Anmeldungsdatum:
5. September 2007

Beiträge: 287

Einen Backtick hat meine Mutter. Geht bald wieder los mit den Plätzchen...

Nee keine Wie du das meinst. Die paar Zeilen Code hab ich mir gesten Abend zusammengepuzzlet. Von Shell Programmierung hab ich leider keine Ahnung. Ich hab jetzt die Zeile mit allen möglichen Gänsefüßen eingerahmt, aber komme ich weiter. ☹

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2510

Ein Backtick ist ein `, also ein accent grave.

Ist aber unschön, nimm stattdessen lieber $(...), das ist besser les- und schachtelbar.

Es geht dabei um Command Substitution. Dabei passiert das, was FromBodom schon sagte: Der Befehl wird ausgeführt und seine Ausgabe aufgefangen, die landet dann in der Variablen.

Übrigens reicht ein Mal #!/bin/bash und du solltest besser alle Shell-Variablen in doppelte Anführungszeichen setzen: "$foo". Außerdem solltest du $datei vielleicht belegen, bevor du es benutzt. ☺

dbk-hubert

(Themenstarter)
Avatar von dbk-hubert

Anmeldungsdatum:
5. September 2007

Beiträge: 287

Vain schrieb:

Ein Backtick ist ein `, also ein accent grave.

Ist aber unschön, nimm stattdessen lieber $(...), das ist besser les- und schachtelbar.

Es geht dabei um Command Substitution. Dabei passiert das, was FromBodom schon sagte: Der Befehl wird ausgeführt und seine Ausgabe aufgefangen, die landet dann in der Variablen.

Ach das Franzosending.

Übrigens reicht ein Mal #!/bin/bash und du solltest besser alle Shell-Variablen in doppelte Anführungszeichen setzen: "$foo". Außerdem solltest du $datei vielleicht belegen, bevor du es benutzt. ☺

Ich hab die Reihenfolge gewählt weil dann immerhin schon mal der Dateiname danach kam, aber egal.

#!/bin/bash
while read line
do	
	datei = "$line" | awk -F "_" '{print $2}'
	echo mplayer -dumpstream "$line" -dumpfile "$datei"
	
done < quelle.txt
 

Ich komme mit try n error nicht mehr weiter und ein passendes Beispiel konnte ich nicht finden wie ich den awk output in $datei bekomme. bisher will sich mir die Logik nicht erschließen. Nach mein Verständnis würde ich

datei = ("$line" | awk -F "_" '{print $2}')

als richtig erachten, aber das wird ja auch nicht akzeptiert.

nullEuro

Avatar von nullEuro

Anmeldungsdatum:
26. Februar 2009

Beiträge: 225

Variablenzuweisungen nie mit Leerzeichen! aus:

datei = ("$line" | awk -F "_" '{print $2}')

mach:

datei=$(echo "$line" | awk -F "_" '{print $2}')

dbk-hubert

(Themenstarter)
Avatar von dbk-hubert

Anmeldungsdatum:
5. September 2007

Beiträge: 287

Ahhh danke, der Abend ist gerettet. ☺ Hab mich da schon festgebissen und der Grund dieser paar Zeilen ist schon unwichtig geworden.

Antworten |