On Mit, Jun 20, 2001 at 06:50:25 +0200, Sascha Peters wrote:
Am Mittwoch, 20. Juni 2001 um 13:40 schrieb Jan Trippler / Sascha Peters:
script.sh '*.mp3' Und im Script machst Du dann: for i in $1; do do_something done
So rufe ich mein Script doch auch auf, es klappt auch aber eben ohne den Mount Befehl.
Das glaube ich nicht. Setzt Du das Argument *.mp3 wie oben in einfache Hochkommata? Dann expandiert die Shell nämlich das Argument nicht mehr und es kommt uverändert im Script an, so dass Du es wie oben beschrieben benutzen kannst.
Wie wäre es dann (inkl. Leerzeichen ;-) mit folgendem Verfahren: <ungetestet> [mounten und was noch so gemacht werden soll]
hier ist der knackpunkt. Wenn ich doch Das script mit dem Parameter "*.mp3" aufrufe dann will der doch im aktuellen Verzeichnis nach den Dateien die er dann in der Schleife als Variable wieder einsetzt haben. Und da ich nicht in dem Verzeichnis das das Script erst noch mountet sein kann geht das doch nicht! Oder sehe nun ich das falsch?
Siehe oben. Du musst nur die Shell daran hindern, das Suchmuster zu expandieren. Das Mounten hat damit überhaupt nichts zu tun. Übergib den Parameter wie oben beschrieben (wozu brauchst Du ihn überhaupt? Willst Du u. U. auch andere Formate umwandeln?), führe im Script ganz normal den mount aus, wechsle in das Verzeichnis auf CD (oder im Netz - das ist vom Prinzip egal) und jage die read-Schleife drüber.
Das Script soll komplett auf einem Netzpfad arbeiten und diesen erst im Script erstellen und auch wieder trennen! So wie Du das meinst bekäme ich das nur in zwei Scripten hin die sich gegenseitig aufrufen, bzw. das eine das andere Aufruft. Wobei ich da nicht weiß wie das eine dann wartet bis das andere Ferig ist. Es muß doch alles in einem Script möglich sein!
Naja, siehe oben ;-) BTW: Wenn Du aus einem Skript heraus ein anderes aufrufst, dann wartet das aufrufende standardmäßig. Das ist nicht anders als in einer interaktiven Shell. Willst Du das nicht, musst Du das aufgerufene Skript in den Hintergrund schicken ( & hintenran). Aber das brauchst Du ja nicht.
cd /pfad/zum/mp3/verzeichnis ls $1 | while read datei; do mpg123 -vw "/pfad/zum/ziel/$(basename "$datei" .mp3).wav" "$datei" done </ungetestet>
So in etwa sieht doch mein Script auch aus, aber das ist auch das einzige was an dem Script funktioniert.
Noch eine andere Variante, wenn Du Dich nicht mit der Dateinamen-Expansion der Shell rumschlagen willst: Übergib dem Script einfach nur die Endung: script.sh mp3 und im Script nimmst Du dann: ls *.$1 | while read datei; do ... Viele Wege führen zur schwarzgebrannten CD ;-) Jan P.S.: Es ist nicht nötig, dass Du die Mails zusätzlich an mich per PM schickst. Ich lese die Liste mit.