Shell Script überprüfen

X

xXNemesisXx

Hallo liebes Unix Board,

Ich hab ein Shellscript was wenn ich es im Terminal ausfürhen möchte mir eine Komische Fehlermeldung ausgibt.

line 30: syntax error: unexpected end of file

In der line 30 ist nichts!!! Das ist die letzte zeile und die ist leer.

Hier seht ihr mal mein Script:

Code:
#!/bin/sh
# Datenbank abfragen
	# Gibt das eingegebene BackUp Verzeichnis aus
	lbu_speicher="SELECT lbu_verz FROM last_backup" | mysql -u BackUpper --password=BLUBB BackUp;
	# Gibt den Speicherort des BackUps aus
	lbu_ort="SELECT lbu_ort FROM last_backup" | mysql -u BackUpper --password=BLUBB BackUp;
	# Gibt den Namen des zu erstellenen BackUps aus
	lbu_name="SELECT lbu_name FROM last_backup" | mysql -u BackUpper --password=BLUBB BackUp;
	# Gibt den Archiv Typen des BackUps aus
	lbu_type="SELECT lbu_type FROM last_backup" | mysql -u BackUpper --password=BLUBB BackUp;
# Wechsel ins Verzeichnis
cd /var/www
# Erstelle BackUp Archiv
if ( $lbu_type == "tar" ) then
	tar -cf ${lbu_name} ${lbu_speicher}
	mv ${lbu_name} ${lbu_ort}
[
else if ( $lbu_type == "tar.gz" ) then 

	tar -czf ${lbu_name} ${lbu_speicher}
	mv ${lbu_name} ${lbu_ort}
]
[
else if ( $lbu_type == "tar.bz2" ) then

	tar -cjf ${lbu_name} ${lbu_speicher}
	mv ${lbu_name} ${lbu_ort}
]
fi

Line 30 ist unter dem "fi"
Ich hab keine ahnung was der von mir will die if anweisung ist doch durch fi "geschlossen" !?
 
ich kenne mich leider nicht mit dem Shellscrpting aus,
aber bei ruby ist das so, dass die If-Anweisung def. ein else-Zweig haben muss, vllt ist das nur dein Fehler!

ansonsten musst du die if-Anweisung vllt einfach nur schließen, fehlt vllt ein "end"?

ciao
 
nope das wars auch nicht...

hab noch mal ein bisschen rum experimentiert und nun bekomme ich eine andere fehlermeldung:

line 24: syntax error near unexpected token `then'
line 24: `else ( $lbu_type == "tar.bz2" ) then'

Code:
# Wechsel ins Verzeichnis
cd /var/www
# Erstelle BackUp Archiv
if ( $lbu_type == "tar" ) then
	tar -cf ${lbu_name} ${lbu_speicher}
	mv ${lbu_name} ${lbu_ort}
[
elif ( $lbu_type == "tar.gz" ) then 

	tar -czf ${lbu_name} ${lbu_speicher}
	mv ${lbu_name} ${lbu_ort}
]
[
else ( $lbu_type == "tar.bz2" ) then

	tar -cjf ${lbu_name} ${lbu_speicher}
	mv ${lbu_name} ${lbu_ort}
]
fi

ich hab jetzt mal die Datenbank abfragen weggelassen... ihr seht das script ab line 11.

Was ist ein token? oO'
 
Hallo
Welche Shell und welches OS.
Immer diese Frage zuerst beantworten.

in der bash wird ein Test mit folgender Syntax realisiert.

Code:
Stringvergleich:
if [ "$VAR" = "STRING" ];
then
...
fi

Else ist optional.


Anmerkung:
Wenn du dich auf Zeilennummer berufst, dann numerier deinen Code bitte.

cat -n file. ;)

Gruß Wolfgang
 
okay...

Shell: Bash
OS: ? Deeeebian 4!!! ?


Zeile 24 ist:

Code:
else ( $lbu_type == "tar.bz2" ) then
 
okay...

Shell: Bash
OS: ? Deeeebian 4!!! ?


Zeile 24 ist:

Code:
else ( $lbu_type == "tar.bz2" ) then

Du hast das oben von mir aber gelesen?

Deine ganze Syntax ist falsch.

Lass die runden Klammern weg und ersetze sie durch [ ] umgeben von Leerzeichen.
Die wahllos eingestreuten eckigen Klammern streiche.
 
Du hast das oben von mir aber gelesen?

Deine ganze Syntax ist falsch.

Lass die runden Klammern weg und ersetze sie durch [ ] umgeben von Leerzeichen.
Die wahllos eingestreuten eckigen Klammern streiche.


ja hab ich gemacht aber es kommt immer noch ein fehler:

Code:
line 17: syntax error near unexpected token elif
line 17: `elif [ $lbu_type == "tar.gz" ] then'

Code:
# Wechsel ins Verzeichnis
cd /var/www
# Erstelle BackUp Archiv
if [ $lbu_type == "tar" ] then
	tar -cf ${lbu_name} ${lbu_speicher}
	mv ${lbu_name} ${lbu_ort}
[B]17: elif [ $lbu_type == "tar.gz" ] then[/B]
	tar -czf ${lbu_name} ${lbu_speicher}
	mv ${lbu_name} ${lbu_ort}
else [ $lbu_type == "tar.bz2" ] then
	tar -cjf ${lbu_name} ${lbu_speicher}
	mv ${lbu_name} ${lbu_ort}
fi
 
Dann lies nochmal genau meinen Hinweis

Code:
Stringvergleich:
if [ "$VAR" = "STRING" ][b][color=red];[/color][/b]
then
...
fi

Auszug aus der Manpage zur Bash:
if list; then list; [ elif list; then list; ] ... [ else list; ] fi
The if list is executed. If its exit status is zero, the then list is executed. Otherwise, each elif
list is executed in turn, and if its exit status is zero, the corresponding then list is executed and the
command completes. Otherwise, the else list is executed, if present. The exit status is the exit status
of the last command executed, or zero if no condition tested true.

Wolfgang
edit://
Damit du die eckigen Klammern in der Manpage richtig interpretierst, gleich noch diesen Hinweis für die man.
The following conventions apply to the SYNOPSIS section and can be used as a guide in other sections.

bold text type exactly as shown.
italic text replace with appropriate argument.
[-abc] any or all arguments within [ ] are optional. <-----HIER
-a|-b options delimited by | cannot be used together.
argument ... argument is repeatable.
[expression] ... entire expression within [ ] is repeatable.
 
Zuletzt bearbeitet:

Ähnliche Themen

NAS-Drive Mount in Bash-Script über crontab

Verschlüsseltes Backup-Script mit rsync

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Shell Skript beschleunigen

Crontab und Scripts - Problem

Zurück
Oben