On Mit, Jun 20, 2001 at 12:20:01 +0200, Sascha Peters wrote:
Am Mittwoch, 20. Juni 2001 um 12:13 schrieb Sascha Peters:
Am Dienstag, 19. Juni 2001 um 19:20 schrieb Juergen Schwarting:
* Am 18.06.2001 um 22:12 Uhr schrieb Sascha Peters:
#!/bin/sh for file; do mpg123 -vw "$(basename $file .mp3).wav" "$file" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ versuch es mal mit "${file%%mp3}wav"
Auch die obere Variante sollte übrigens laufen, da basename bei entspr. Angabe auch den Suffix abtrennt, also $ basename /tmp/abc.mp3 .mp3 abc $
Das klappt übrigens gervorragend, aber habe ich immernoch das Problem das das script die Variabel "file" ja per Shell Parameter bekommt. % SCRIPT.SH *.mp3 zum Beispiel. Aber ich habe die Dateien noch nicht im System da ich sie erst noch mounten muß, was aber auch das Script übernehmen soll. Wie mache ich denn es das er trotzdem die Variabel mit dem entsprechenden Wert füllt? Bisher habe ich Probleme mit den Leerzeichen im Dateinamne etc....
Verstehe ich Dich richtig, dass Du die mp3-Dateinamen erst zur Laufzeit des Scripts ermitteln willst? Dann gib ihm doch das Scuhmuster als Suchmuster mit: script.sh '*.mp3' Und im Script machst Du dann: for i in $1; do do_something done Ich habe den Anfang vom Thread nicht mehr, aber nach dem, was ich gelesen habe, willst Du: - alle mp3-Dateien von irgendeinem Datenträger (CD-ROM o. ä.) einlesen - alphabetisch sortieren - in .wav umwandeln Korrekt? Wie wäre es dann (inkl. Leerzeichen ;-) mit folgendem Verfahren: <ungetestet> [mounten und was noch so gemacht werden soll] cd /pfad/zum/mp3/verzeichnis ls $1 | while read datei; do mpg123 -vw "/pfad/zum/ziel/$(basename "$datei" .mp3).wav" "$datei" done </ungetestet> Der ls sortiert, es wird also keine temp. Datei benötigt und der read liest inkl. Leerzeichen. Jan P.S.: Ich würde prinzipiell keine Variable $file nennen. file ist ein Standard-Unixkommando und das kann zu Verwechslungen führen.