Shell problem.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
eimer
Beiträge: 77
Registriert: 09.11.2005 12:55:49
Wohnort: Endingen a.K.

Shell problem.

Beitrag von eimer » 06.10.2008 19:15:48

HI,
ich bastel an einem Code doch der will nicht funktionieren.

Erstmal der Richtige Code:

Code: Alles auswählen

#! /bin/bash -x
# myunrar soll automatisch einen Ordner erstellen mit richtigem Datei Namen und entpackte Datei im Ordner richtig bennen

Fname=${1:=""}
InpName=${2:=""}
CDnr=${3:=""}
Path=`dirname $2`/
echo -e "Filmbezeichnung: $Fname"
echo -e "Inputbezeichnung: $InpName"
echo -e "Pfad: $Path"
if [ $1="" || $3=""] then
	echo -e myunrar Film CDNr. InpFile
else
fi
	
if [ $CDnr="" ] then
		OutpName=${Fname}.avi
		echo - e "Ausgabebezeichnung: $OutpName"
		mkdir -p /Entertainment/Filme/$Fname && unrar x $InpName /Entertainment/Filme/$Fname && cd /Entertainment/Filme/$Fname && mv *.avi $OutpName && rm -r $Path
		echo -e "Pfadbezeichnung: /Entertainment/Filme/$Fname \r\n"	
else
		OutpName=${Fname}_CD${CDnr}.avi
		echo "Ausgabebezeichnung: $OutpName"
		mkdir -p /Entertainment/Filme/$Fname && unrar x $InpName /Entertainment/Filme/$Fname && cd /Entertainment/Filme/$Fname && mv *.avi $OutpName && rm -r $Path
		echo -e "Pfadbezeichnung: /Entertainment/Filme/`$Fname`\r\n"
fi
cd .. && ls -l
Folgende Probleme treten auf, leider bin ich totaler Anfänger und blick nichts was da steht.

Code: Alles auswählen

myunrar peter peter-xvid.rar
+ Fname=peter
+ InpName=peter-xvid.rar
/usr/local/bin/myunrar: line 6: $3: cannot assign in this way
++ dirname peter-xvid.rar
+ Path=./
+ echo -e 'Filmbezeichnung: peter'
Filmbezeichnung: peter
+ echo -e 'Inputbezeichnung: peter-xvid.rar'
Inputbezeichnung: peter-xvid.rar
+ echo -e 'Pfad: ./'
Pfad: ./
/usr/local/bin/myunrar: line 13: syntax error near unexpected token `else'
/usr/local/bin/myunrar: line 13: `else'
Hoff mir kann wer helfen.

Mfg eimer
Gi´me hope Juana.....

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Shell problem.

Beitrag von gms » 06.10.2008 19:28:30

hier möchtest du den Defaultwert "" verwenden, wenn $1..$3 nicht definiert ist:

Code: Alles auswählen

Fname=${1:-""}
InpName=${2:-""}
CDnr=${3:-""}
wenn du aber ${1:=""} verwendest, würdest du der Variablen $1 den Wert "" zuweisen, was bei den postitional Parametern so nicht geht.

einen leeren IF oder ELSE-Zweig mag die Shell auch nicht:

Code: Alles auswählen

else
fi
Ich habe jetzt nur die Fehler vom xtrace betrachtet, also sind noch möglicherweise weitere Fehler in dem Script

Gruß
gms

eimer
Beiträge: 77
Registriert: 09.11.2005 12:55:49
Wohnort: Endingen a.K.

Re: Shell problem.

Beitrag von eimer » 07.10.2008 14:15:27

Irgendwie will er das alles nicht schlucken, ich kann bei dem
else
fi
keinen Fehler finden, auch wenn ich echo "hallo" eintrage spuckt er mir ein fehler aus

Code: Alles auswählen

/usr/local/bin/myunrar: line 13: syntax error near unexpected token `else'
/usr/local/bin/myunrar: line 13: `else'
Außerdem funktioniert das mit dem Pfad leider auch nicht, obwohl das mal funktioniert hat, ich weiß nur nicht warum das nicht mehr geht.

??

Hilfe
Gi´me hope Juana.....

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Shell problem.

Beitrag von Duff » 07.10.2008 15:02:01

Du darft in der if-else Anweisung den else Block nicht verwenden, wenn du keinen else-Zweig hast.

if ....
then
irgendwas
fi

--> wenn du keinen else-Zweig hast
Oh, yeah!

Antworten