Wo ist der Denkfehler - IF-Abfragen

simplex

simplex

[Versuchstier]
Hallo folgendes Skript is gegeben:

#/bin/sh
abfrage=$(ps -A | grep -o "[m]ysqld" | head -n1)

read -p "MySql Daten in /inc/dbconnect.php eingetragen?" daten
if [ "$daten" == "ja" ] then;
if [ "$abfrage" == "mysqld" ]; then
echo "Mysql läuf"
else
echo "MySql läuft nicht"
read -p "Soll MySql gestartet werden?" frage

if [ "$frage" == "ja" ]; then
echo "MySql wird gestartet"
/opt/lampp/lampp start
clear
echo "MySQL gestartet"
else
echo "Einrichtung kann nur mit laufendem MySql - Server erfolgen - Programmabbruch"

else
echo "Einrichtung kann nur mit korrekten Daten ausgefuehrt werden - Programmabbruch"
fi
fi
fi

Nach Ausführung und beantworten der ersten Frage (MySql Daten eingetragen?) mit ja oder nein kommt folgender Fehler:

root@kubuntu:/home/simplex/skript# ./einrichtung
MySql Daten in /inc/dbconnect.php eingetragen?ja
./einrichtung: line 20: syntax error near unexpected token `else'
./einrichtung: line 20: `else'
root@kubuntu:/home/simplex/skript# ./einrichtung
MySql Daten in /inc/dbconnect.php eingetragen?nein
./einrichtung: line 20: syntax error near unexpected token `else'
./einrichtung: line 20: `else'
root@kubuntu:/home/simplex/skript#

Wo ist der Fehler?
Ablauf soll so laufen:


1. Frage: MySql Daten in *** eingetragen? Antwort "ja" --> Überprüfung von MySQL-Status u.s.w
2. Frage: MySql Daten in *** eingetragen? Antwort "nein" --> Ausgabe "Einrichtung kann nurmit korrekten Daten ausgeführt werden - Programmabbruch"

Genau das funktioniert nicht..

Wird die erste Abfrage ausgeklammert funktioniert es ohne Probleme!

Also so:

#/bin/sh
abfrage=$(ps -A | grep -o "[m]ysqld" | head -n1)

##read -p "MySql Daten in /inc/dbconnect.php eingetragen?" daten
##if [ "$daten" == "ja" ] then;
if [ "$abfrage" == "mysqld" ]; then
echo "Mysql läuf"
else
echo "MySql läuft nicht"
read -p "Soll MySql gestartet werden?" frage

if [ "$frage" == "ja" ]; then
echo "MySql wird gestartet"
/opt/lampp/lampp start
clear
echo "MySQL gestartet"
else
echo "Einrichtung kann nur mit laufendem MySql - Server erfolgen - Programmabbruch"

#else
##echo "Einrichtung kann nur mit korrekten Daten ausgefuehrt werden - Programmabbruch"
#fi
fi
fi

Hoffe ihr könnte mir helfen! :)

Habe gerade einen Fehler gefunden
if [ "$daten" == "ja" ] then; ist falsch -> if [ "$daten" == "ja" ] then; bringt aber immernoch selbe fehlerausgabe
 
Zuletzt bearbeitet:
hi,
bin selbst noch totaler scripting anfaenger, aber wenn ich mich nicht irre, muessen die ersten beiden if's vor dem letzten else geschlossen werden, also:
Code:
#!/bin/sh
abfrage=$(ps -A | grep -o "[m]ysqld" | head -n1)

read -p "MySql Daten in /inc/dbconnect.php eingetragen?" daten
if [ "$daten" == "ja" ]; then
	if [ "$abfrage" == "mysqld" ]; then
		echo "Mysql läuf"
	else
		echo "MySql läuft nicht"
		read -p "Soll MySql gestartet werden?" frage
	
		if [ "$frage" == "ja" ]; then
			echo "MySql wird gestartet"
			/opt/lampp/lampp start
			clear
			echo "MySQL gestartet"
		else
			echo "Einrichtung kann nur mit laufendem MySql - Server erfolgen - Programmabbruch"
		fi
	fi
else
	echo "Einrichtung kann nur mit korrekten Daten ausgefuehrt werden - Programmabbruch"
fi

uebrigens, indentation (einrueckung) is dein freund ;)
mfg,
bytepool
 
Zuletzt bearbeitet:
ohhh danke... ^^ ich sollte mal bisschen ordnung in die sache bringen...
 
Hallo
SimpleX schrieb:
ohhh danke... ^^ ich sollte mal bisschen ordnung in die sache bringen...
Das ist eine gute Idee.
Merke:
if condition then
do
#todo
else (if not then do this)
fi

Also ist das wirklich sehr hilfreich, wenn du einrückst, um zu sehen was zusammen gehört.
Gerade bei verschachtelten Abfragen ist das hilfreich.
Sonst erhältst du zwar ausführbaren Code, aber nicht unbedingt logischen Code.
Du verkomplizierst dir damit selbst das Debugging.

Gruß Wolfgang
 

Ähnliche Themen

If-Abfrage kommt nicht positiv zurück, obwohl Kriterium erfüllt

Shell Skript beschleunigen

HandbrakeCLI Shell Skript

Queue für copy Script

Script zu bearbeiten einer conf Datei

Zurück
Oben