So, mein skript sieht jetzt so aus, fürs debuggen hab ich nur die zeilen in denen wiklich was an Dateien gemacht wird auskommentiert:
Code: Alles auswählen
#! /bin/sh
# ogg2mp3 - Konvertiert eine .ogg datei nach mp3 benötigt sox und lame
# Gebrauch: ogg2mp3 QUELLVERZEICHNIS ZIELVERZEICHNIS
IFS=""
if [ "$1" = "" ];
then
echo "Gebrauch: ogg2mp3 QUELLVERZEICHNIS ZIELVERZEICHNIS";
exit;
fi
if [ "$2" = "" ];
then
echo "Gebrauch: ogg2mp3 QUELLVERZEICHNIS ZIELVERZEICHNIS";
exit;
fi
# in der nächsten zeile sollte möglichst vor dem Beenden noch eine Fehlermeldung ausgegeben werden
test -d $1 || exit;
test -d $2 || mkdir $2;
cd $1 || exit;
for n in *.ogg;
do
echo "Konvertiere "$n" nach "`basename $n .ogg`".wav";
# sox $n /tmp/`basename $n .ogg`.wav;
done
cd /tmp || exit;
for n in *.wav;
do
echo "Konvertiere "$n" nach "`basename $n .wav`".mp3";
# lame -v -t $n $2`basename $n .wav`.mp3;
echo "Lösche $n";
# rm $n;
done
jetzt würd ich gerne noch ein paar sachen verschönern:
1. nach dem test ob der erste parameter ein Verzeichnis ist (Z.20) würde ich gerne erst noch vor dem Verlassen eine Fehlermeldung ausgeben lassen, ich hab mal:
Code: Alles auswählen
test -d $1 || echo $1" ist kein Verzeichnis!" && exit;
ausprobiert, aber dann verlässt er das skript irgendwie immer an dieser stelle und mit klammern also so:
Code: Alles auswählen
test -d $1 || (echo $1" ist kein Verzeichnis!" && exit);
funzts auch nicht
2. in dieser:
Zeile würde ich gerne noch den benutzer fragen, ob auch wirklich ein verzeichnis angelegt werden soll.
3. kann man die if abfrage für beide parameter gleichzeitig machen, also beide bedingungen mit
or verknüpfen?
ich hab mal
ausprobiert, aber da stimmt wohl was an der syntax nicht
ich hoffe, dass ihr mir auch hier helfen werdet,
thx
npi
P.S.: ist es eigentlich egal, ob man das skript mit bash oder mit sh ausführen lässt. also ob die erste zeile #! /bin/bash oder #! /bin/sh heisst?
wann braucht man eigentlich ein semikolon am ende der zeile und wann kann man es weglassen?