while read line; do irgendwas; done < file

09/11/2009 - 16:03 von Fr | Report spam
Hallo zusammen,

es ist sicher ein Trivialfall und ich sehe den Wald
vor lauter Bàumen nicht. Mein Bash-Aufruf:

while read line; do echo rm2wav $line; done < URLs
^ ^^^^
^ siehe [1]
^
gibt (wg. Test mit "echo") Zeilen der Form

rm2wav pnm://www.museeq.net/rm_b/CAP218-2A-1.rm
rm2wav pnm://www.museeq.net/rm_b/COL77086-3.rm
...

aus. Nehme ich eine solche Zeile als Kommando, direkt am
Shell-Prompt, tut das Skript "rm2wav", was es soll und
speichert den Audio-Stream als WAV-Datei.

Verwende ich dagegen die ganz oben gezeigte Form mit (while ... done),
funktioniert die Konvertierung nicht.

Bitte öffnet mir die Augen - ich will's begreifen!

Viele Grüße aus den Alpen,
Frank



[1] Die Datei URLs

pnm://www.museeq.net/rm_b/CAP218-2A-1.rm
pnm://www.museeq.net/rm_b/COL77086-3.rm
...
 

Lesen sie die antworten

#1 Hauke Laging
09/11/2009 - 16:58 | Warnen spam
schrieb am Montag 09 November 2009 16:03:

while read line; do echo rm2wav $line; done < URLs

aus. Nehme ich eine solche Zeile als Kommando, direkt am
Shell-Prompt, tut das Skript "rm2wav", was es soll und
speichert den Audio-Stream als WAV-Datei.

Verwende ich dagegen die ganz oben gezeigte Form mit (while ...
done), funktioniert die Konvertierung nicht.



Fehlermeldungen sind manchmal gar nicht so nutzlos. Man könnte das
einfach mal nach set -x starten.

In diesem Fall scheint es egal zu sein, aber im allgemeinen sollte
man immer "$line" schreiben, wenn man nicht Spezielles vorhat (eval)
und ganz genau weiß, was man tut.

Was für ein Script ist denn rm2wav? Wenn es ein Shellscript ist,
einfach mal bash -vx rm2wav ... nehmen und dann die Ausgabe beider
Varianten vergleichen.


CU

Hauke
http://www.hauke-laging.de/ideen/

Ähnliche fragen