ubuntuusers.de

Probleme mit Bashscript

Status: Gelöst | Ubuntu-Version: Ubuntu
Antworten |

chrisjakob Team-Icon

Avatar von chrisjakob

Anmeldungsdatum:
21. August 2006

Beiträge: 1808

Wohnort: Köln

Hallo,
ich habe heut nach laaanger Zeit mal wieder versucht nen Bash Script zu schreiben, da es mir auf die nerven geht für jedes Format was ich umwandeln will den eigentlichen syntax rauszusuchen usw.

Naja wie dem auch sei, das Problem ist, folgendes:

chris@home:~ ./mencoder.sh avi2flv test.avi 
usage: ./mencoder.sh wmv2avi/avi2flv/mpg2flv/mpg2avi/flv2mpg <file>


Die Usage sollte ja eigentlich richtig sein...

Naja hier mal der Versuchs-Code.

#!/bin/bash
arg=$1
filename=$2

#echo "$arg"
#echo "$filename"
if [ ! -n "$arg" ] && [ ! -n "$filename" ]
then
echo "usage: ./mencoder.sh wmv2avi/avi2flv/mpg2flv/mpg2avi/flv2mpg <file>"

if [ "$arg" == "wmv2avi" ]
then
mencoder "$filename" -ovc lavc -oac lavc -ofps 25 -srate 48000 -o "${filename%}.avi"
fi

if [ "$arg" == "mpg2avi" ] 
then
transcode -i "$filename" -o "${filename%}.avi" -y xvid
fi

if [ "arg" == "mpg2flv" ]
then
ffmpeg -i "$filename" -b 350 -ab 256 "${filename%}.flv"
fi

if [ "$arg" == "flv2mpg" ]
then
ffmpeg -i "$filename" -ab 56 -ar 22050 -b 500  -s 320x240 "${filename%}.mpg"
fi

if [ "$arg" == "avi2flv" ]
then
ffmpeg -i "$filename" -ab 192 -ar 48000 -b 300 "${filename%}.avi"
fi

else 
echo "usage: ./mencoder.sh wmv2avi/avi2flv/mpg2flv/mpg2avi/flv2mpg <file>"
fi
exit 1

Gruß,
chris

radoe2

Anmeldungsdatum:
30. November 2006

Beiträge: 243

chrisjakob hat geschrieben:

Hallo,
ich habe heut nach laaanger Zeit mal wieder versucht nen Bash Script zu schreiben, da es mir auf die nerven geht für jedes Format was ich umwandeln will den eigentlichen syntax rauszusuchen usw.

Naja wie dem auch sei, das Problem ist, folgendes:

chris@home:~ ./mencoder.sh avi2flv test.avi 
usage: ./mencoder.sh wmv2avi/avi2flv/mpg2flv/mpg2avi/flv2mpg <file>


Die Usage sollte ja eigentlich richtig sein...

Naja hier mal der Versuchs-Code.

...

Gruß,
chris

Auch wenn ich zweimal hinsehen und dreimal lesen musste, um dein Problem überhaupt zu erfassen: Das ersetzen von aller == durch = sollte helfen.

chrisjakob Team-Icon

(Themenstarter)
Avatar von chrisjakob

Anmeldungsdatum:
21. August 2006

Beiträge: 1808

Wohnort: Köln

Hat leider nicht geholfen.

NoKurth

Avatar von NoKurth

Anmeldungsdatum:
18. August 2006

Beiträge: 430

Hallo Chris,

zwei Fehler habe ich entdeckt.

1) Wenn schon "test" in Kurzform, dann "\[[ ... ]]".
2) Warum sollten $1 und $2 leer sein? "-n" testet auf einen NICHT leeren String und "!" kehrt dies wieder um; also testest du, ob $1 und $2 LEER sind.

Gruß
Norman

radoe2

Anmeldungsdatum:
30. November 2006

Beiträge: 243

NoKurth hat geschrieben:

Hallo Chris,

zwei Fehler habe ich entdeckt.

1) Wenn schon "test" in Kurzform, dann "\[[ ... ]]".
2) Warum sollten $1 und $2 leer sein? "-n" testet auf einen NICHT leeren String und "!" kehrt dies wieder um; also testest du, ob $1 und $2 LEER sind.

Gruß
Norman

Mit 2) hast du recht. Bei 1) stimme ich dir nicht wirklich zu. \[[...]] ist nicht die Kurzform von test, das ist tatsächlich [...]. \[[...]] ist ein Bash/ksh/u.a. spezifisches Feature, das nicht genormt ist und sich anders verhält als test.

chrisjakob Team-Icon

(Themenstarter)
Avatar von chrisjakob

Anmeldungsdatum:
21. August 2006

Beiträge: 1808

Wohnort: Köln

Habs hinbekommen.

#!/bin/bash
arg=$1
filename=$2


#echo "$arg"
#echo "$filename"
if [ "$2" != "$null" ] && [ "$1" != "$null" ]
then
echo "usage: ./mencoder.sh wmv2avi/avi2flv/mpg2flv/mpg2avi/flv2mpg <file>"

if [ "$arg" = "wmv2avi" ]
then
mencoder "$filename" -ovc lavc -oac lavc -ofps 25 -srate 48000 -o "${filename%}.avi"
fi

if [ "$arg" = "mpg2avi" ] 
then
transcode -i "$filename" -o "${filename%}.avi" -y xvid
fi


if [ "arg" = "mpg2flv" ]
then
ffmpeg -i "$filename" -b 350 -ab 256 "${filename%}.flv"
fi

if [ "$arg" = "flv2mpg" ]
then
ffmpeg -i "$filename" -ab 56 -ar 22050 -b 500  -s 320x240 "${filename%}.mpg"
fi

if [ "$arg" = "avi2flv" ]
then
ffmpeg -i "$filename" -ab 192 -ar 44100 -b 300 "${filename%}.flv"
fi

else 
echo "usage: ./mencoder.sh wmv2avi/avi2flv/mpg2flv/mpg2avi/flv2mpg <file>"
fi
exit 1


Hatte nen Denkfehler drin ja....
Zu checken ob filename & arg leer sind wenn sie doch gesetzt sind, is natürlich Bullshit. ☺

Werde das Script noch weiter umbauen und mich ggf. wieder melden. Das is erstmal das Ergebnis, wie es erstmal funktioniert.

Antworten |