Hallo erstmal,
#!/bin/sh for file; do mpg123 -vw "$(basename $file .mp3).wav" "$file" done
Aufruf mit <skript> *.mp3
Habe ich in der Liste gefunden. Kann man denn das so umschreiben das man in dem Filenamen das ".mp3.wav" weg hat, dafür aber ein ".wav"? Ich bin nicht der große shell Programmierer. so in etwa soll das aussehen! weiß nur nicht wie ich das Zeitlich von einander abhängig machen kann, so das die mail erst los geht wenn er auch fertig ist. #!/bin/sh mount -t smbfs -o username=user //rechner/share /share && \ cd /share && \ for file; do mpg123 -vw "$file.wav" "$file" done && \ echo |mail -s "fertig mit dem MP3 -> WAV Decoden" user@host && \ cdrecord dev=0,0,0 -v -audio -pad speed=2 /share/*.wav && \ echo |mail -s "fertig mit dem BRENNEN" user@host && \ umount /share \ Der aufruf *.wav während der brennt, bedeutet das das er nach alphabetischer Reihenfolge brennt? danke schonmal! -- Mit freundlichen Grüssen Sascha Peters linux@progressing.de
Sascha Peters schrieb am 18.06.2001 22:12:22:
#!/bin/sh for file; do mpg123 -vw "$(basename $file .mp3).wav" "$file" done
Aufruf mit <skript> *.mp3
Habe ich in der Liste gefunden. Kann man denn das so umschreiben das man in dem Filenamen das ".mp3.wav" weg hat, dafür aber ein ".wav"? Ich bin nicht der große shell Programmierer.
Klappt das nicht? Eigentlich sollten die neuen Dateien danach die Endung .wav haben statt .mp3 oder gar .mp3.wav. Dafür sorgt das basename. Syntax in diesem Fall: basename <Dateiname> <zuStreichendesSuffix> Mit $(nochnBefehl) kannst du Befehle schachteln. Hier wird innerhalb der Klammer der Dateiname von allen Pfadangaben und dem Suffix .mp3 befreit, bevor ihm direkt nach der Klammer ein .wav hintendran gepappt wird. Die Leerzeichen sorgen dafür, daß Leerzeichen im Dateinamen keinen Ärger machen.
so in etwa soll das aussehen! weiß nur nicht wie ich das Zeitlich von einander abhängig machen kann, so das die mail erst los geht wenn er auch fertig ist.
Soweit ich weiß, sollte ein && zwischen den Befehlen helfen, da dann der zweite Befehl den positiven Rückgabecode des ersten Befehls abwartet. Aber das hast du ja schon eingebaut.
#!/bin/sh
Wenn Du das Konstrukt $(nochnBefehl) benutzt, solltest Du der Ordnung halber hier ein #!/bin/bash hinschreiben, da das Konstrukt bash-spezifisch ist. Oder Du ersetzt $(blubb) durch `blubb` (das sind backticks oder auch accents graves (sp?)), dann kannst Du auch /bin/sh stehenlassen. Ist aber mehr eine Sache des "jetzt machen wir es ordentlich".
for file; do mpg123 -vw "$file.wav" "$file" done && \
Übernimm ruhig den mpg123-Aufruf mit basename vom obigen Skript, damit Du die Endungen richtig hinbekommst.
Der aufruf *.wav während der brennt, bedeutet das das er nach alphabetischer Reihenfolge brennt?
Er brennt meines Erachtens in genau der Reihenfolge, die er beim Aufruf von ls nutzen würde. Vorsicht: Alles ungetestet, keine eigene Brenn-Erfahrung vorhanden :-( Gruss, Antje -- Antje M. Bendrich list@bendrich.de http://www.bendrich.de
Hallo erstmal, Am Montag, 18. Juni 2001 um 23:02 schrieben Sie: AB> Sascha Peters schrieb am 18.06.2001 22:12:22:
#!/bin/sh for file; do mpg123 -vw "$(basename $file .mp3).wav" "$file" done
Aufruf mit <skript> *.mp3
Habe ich in der Liste gefunden. Kann man denn das so umschreiben das man in dem Filenamen das ".mp3.wav" weg hat, dafür aber ein ".wav"? Ich bin nicht der große shell Programmierer.
AB> Klappt das nicht? jetzt wo du sogar meintest das das klappt habe ich das mal gemacht. Aber der fragt dann nach dem Passwort des Mountbefehls, das soll er auch! aber dann sagt der "/mnt is busy" aber wenn ich dann manuell das ausführe dann macht der das! Allerdings sagt der das auch wenn ich die Zeile auskommentiere, wo der cd /mnt/mp3 steht! AB> Eigentlich sollten die neuen Dateien danach die Endung .wav haben AB> statt .mp3 oder gar .mp3.wav. Dafür sorgt das basename. Das mit Basename scheint zu klappen aber habe ich noch nicht testen können wegen dem obigen Problem! AB> Soweit ich weiß, sollte ein && zwischen den Befehlen helfen, da AB> dann der zweite Befehl den positiven Rückgabecode des ersten AB> Befehls abwartet. Aber das hast du ja schon eingebaut. schein aber nicht, denn obwohl der mit "/mnt is busy" abbricht bekomme ich die Mails.
Der aufruf *.wav während der brennt, bedeutet das das er nach alphabetischer Reihenfolge brennt? AB> Er brennt meines Erachtens in genau der Reihenfolge, die er beim AB> Aufruf von ls nutzen würde.
kann man da vielleicht auch einfluss drauf nehmen mit Umleitung dem Script übergeben oder so? AB> Vorsicht: Alles ungetestet, keine eigene Brenn-Erfahrung vorhanden AB> :-( danke, aber will zum testen den Brennbefehl erstmal auskommentieren geht sich nur ums Umwandeln der mp3s! danke nochmals! -- Mit freundlichen Grüssen Sascha Peters linux@progressing.de
Sasche Peters schrieb am 18.06.2001 23:24:29:
AB> Klappt das nicht?
jetzt wo du sogar meintest das das klappt habe ich das mal gemacht. Aber der fragt dann nach dem Passwort des Mountbefehls, das soll er auch! aber dann sagt der "/mnt is busy" aber wenn ich dann manuell das ausführe dann macht der das!
Allerdings sagt der das auch wenn ich die Zeile auskommentiere, wo der cd /mnt/mp3 steht!
Ich meinte mit "klappt das nicht" das obere kurze Skript. Mit Samba habe ich mich auch noch nicht so auseinandergesetzt, daß ich dazu was sagen könnte.
Der aufruf *.wav während der brennt, bedeutet das das er nach alphabetischer Reihenfolge brennt? AB> Er brennt meines Erachtens in genau der Reihenfolge, die er beim AB> Aufruf von ls nutzen würde.
kann man da vielleicht auch einfluss drauf nehmen mit Umleitung dem Script übergeben oder so?
Du könntest beispielsweise mit "ls >reihenfolge.txt" die Stücke in eine Textdatei packen, diese von Hand umsortieren und dann die for-Schleife aus dieser Datei füttern: for file in $(cat reihenfolge.txt); do .... (Frage an Gurus: Ist das wieder "useless use of cat"?)
danke nochmals!
Soweit ich kann, gerne. Gruss, Antje -- Antje M. Bendrich list@bendrich.de http://www.bendrich.de
On Mon, 18 Jun 2001, Antje Bendrich wrote:
for file in $(cat reihenfolge.txt); do .... (Frage an Gurus: Ist das wieder "useless use of cat"?)
Ich bin zwar kein "bash-Guru", aber... Nein, ist es nicht. Das for-builtin nimmt eine, durch eines der in der shell-Variablen $IFS enthaltenen Zeichen getrennte, Liste als Parameter und arbeitet fuer jedes der Elemente dieser Liste dann die Befehle in der 'do...done' Schleife ab. Vergleiche: FILESA="t1 t2 t3" FILESB="t1 t2 t3" DIRS="t1:t2:t3" for f in $FILESA; do echo "f='$f'"; done for f in "$FILESA"; do echo "f='$f'"; done for f in $FILESB; do echo "f='$f'"; done for f in "$FILESB"; do echo "f='$f'"; done for d in $DIRS; do echo "d='$d'"; done OLDIFS="$IFS" IFS=":" for d in $DIRS; do echo "d='$d'"; done for d in "$DIRS"; do echo "d='$d'"; done IFS="$OLDIFS" Ob du nun die Parameter_liste_(!) fuer das 'in ...' direkt, durch eine Variable, eine Wildcard (z.B. *.mp3), oder via `befehl` (bzw. $(befehl)) erzeugst, ist dabei unerheblich. Entscheidend ist _nur_, dass dort _nach_ der Expandierung durch die bash, eine durch $IFS getrennte Liste steht. Ob die Liste nun also eine expandierte Wildcard, eine expandierte Variable oder das Ergebnis eines Befehls oder sonstwas ist, ist irrelevant. Ach ja, IFS enthaelt normalerweise das Leerzeichen ' ' (0x20, ' '), das Tabulatorzeichen ' ' (0x09, \t) und den Zeilenumbruch ' ' (0x0A, \n). Das umdefinieren von IFS wie oben wird u.a. in den diversen tex-scripten (z.B. /var/lib/texmf/web2c/mktex.opt) oft verwendet, um z.B. ':' als Pfadtrenner auszuwerten. HTH -dnh -- Wenigstens hatt man es geschafft, einige von Ihnen in einem Coputerspiel als "Kanonenfutter" zu "verheizen" . Zermatscht sehen sie irgendwie besser aus. Aber Ich glaube selbst "der brei" lebt noch. denn der schreit noch immer . "OhOh!" [WoKo in dag°]
Beim Durchlesen fiel mir auf, wie wirr ich geschrieben habe. Also ein zweiter, hoffentlich verständlicherer Versuch: Antje Bendrich schrieb am 18.06.2001 23:02:22:
Sascha Peters schrieb am 18.06.2001 22:12:22:
#!/bin/sh for file; do mpg123 -vw "$(basename $file .mp3).wav" "$file" done
Aufruf mit <skript> *.mp3
Habe ich in der Liste gefunden. Kann man denn das so umschreiben das man in dem Filenamen das ".mp3.wav" weg hat, dafür aber ein ".wav"? Ich bin nicht der große shell Programmierer.
Eigentlich sollten die neuen Dateien danach die Endung .wav haben statt .mp3 oder gar .mp3.wav. Dafür sorgt das basename.
Vielleicht einfacher lesbar aufgedröselt: for file; do alterName=$file neuerNameOhneEndung=$(basename $altername .mp3) neuerNameMitEndung=${neuerNameOhneEndung}.wav mpg123 -vw "$neuerNameMitEndung" "$alterName" done Die geschweiften Klammer sorgen hier dafür, daß die Shell den Variablennamen überhaupt erkennen kann, was sie bei $neuerNameOhneEndung.wav nicht könnte. Es wird zu spät, ich verstehe meine Erklärungen selber kaum. Gute Nacht. Gruss, Antje -- Antje M. Bendrich list@bendrich.de http://www.bendrich.de
Hallo erstmal, Am Montag, 18. Juni 2001 um 23:25 schrieben Sie: AB> Antje Bendrich schrieb am 18.06.2001 23:02:22: AB> Vielleicht einfacher lesbar aufgedröselt: AB> for file; AB> do AB> alterName=$file AB> neuerNameOhneEndung=$(basename $altername .mp3) AB> neuerNameMitEndung=${neuerNameOhneEndung}.wav AB> mpg123 -vw "$neuerNameMitEndung" "$alterName" AB> done Also das habe ich schon verstanden und wird auch später erst interessant wenn die eigentliche Funktion das Automatische decoden der mp3´s klappt. Ich denke da ist ein denkfehler. Dem Script muß man die Files die zu bearbeiten sind mitgeben, da aber erst der Befehl "mount" im Script kommt, und die Dateien da liegen, ist das nicht möglich. Ich muß also die Variable $file, erst im Script nach dem Mounten definieren. AB> Es wird zu spät, ich verstehe meine Erklärungen selber kaum. AB> Gute Nacht. schade, aber dann versuche ich es morgen wieder! -- Mit freundlichen Grüssen Sascha Peters linux@progressing.de
Hallo Sascha, * 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"
done
Aufruf mit <skript> *.mp3
Habe ich in der Liste gefunden. Kann man denn das so umschreiben das man in dem Filenamen das ".mp3.wav" weg hat, dafür aber ein ".wav"? Ich bin nicht der große shell Programmierer.
Jürgen -- Der Computer ist die Lösung. Jetzt brauchen wir nur noch ein Problem. / Registered Linux-User #130804 http://counter.li.org \ \ Linux Stammtisch Bremerhaven http://linux.hs-bremerhaven.de /
participants (4)
-
Antje Bendrich
-
David Haller
-
Juergen Schwarting
-
Sascha Peters