• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

BASH SCRIPTING IF PROBLEM

torbla

Member
Hallo Leute ich versuche ein Script zu schreiben das mir für den Benutzer ein Laufwerk einbindet. Das sieht so aus

Code:
#!/bin/bash
sudo smbmount //PC/Freigabe /mnt-punkt -o username=tux, uid=tux,password=tux

So jetzt möchte ich das er mir sagt es hat gefunzt oder nicht.

Code:
if /usr/bin/smbmount = sterr 
then

 echo "Laufwerk wurde nicht eingebunden! "

else
 
echo "Laufwerk wurde eingebunden"

fi

Leider funktioniert das nicht so. Habe auch schon die varianten

Code:
if [ /usr/bin/smbmount = sterr ]

Dann zeigt er mir immer das es erfolreich war.

WAS MACHE ICH DEN FALSCH
 

Hermann

Hacker
torbla schrieb:
So jetzt möchte ich das er mir sagt es hat gefunzt oder nicht.

Hallo torbla, für mein Backup teste ich vorher ob das Ziel existiert so:

Mit mkdir versuche ich einen Ordner ".test_ordner_tmp" auf dem Ziel-Laufwerk zu erstellen, wenn es funktioniert ist alles O.K. und das Backup startet.

rmdir /pfad/.test_ordner_tmp >/dev/null
if mkdir /pfad/.test_ordner_tmp >/dev/null ; then
rmdir /pfad/.test_ordner_tmp >/dev/null
# Laufwerk existiert
# weitere Anweisungen
else
# Laufwerk existiert nicht
# weitere Anweisungen
fi

Gruß, Hermann
 
OP
torbla

torbla

Member
Ne leider war das nicht die Lösung jetzt nur das else ? Geht aber nicht in die schleife
 

Hermann

Hacker
torbla schrieb:
Ne leider war das nicht die Lösung jetzt nur das else ? Geht aber nicht in die schleife

Hallo torbla, möchtest Du nur denn else Teil? Dann ein if ! (not):

rmdir /pfad/.test_ordner_tmp >/dev/null
if ! mkdir /pfad/.test_ordner_tmp >/dev/null ; then
# Laufwerk existiert nicht
# weitere Anweisungen
fi

Gruß, Hermann
 
OP
torbla

torbla

Member
Also ich möchte das er beises macht den then Teil und dann den else Teil

if ! /usr/bin/smbmount >/dev/null ; then

echo " Hat leider nicht geklappt

else

echo hat geklappt

fi

Leider macht er nur den oberen Teil :-(
 

Hermann

Hacker
torbla schrieb:
Also ich möchte das er beises macht den then Teil und dann den else Teil

Hallo torbla, so gibt es in jedem Fall eine Ausgabe:

#!/bin/bash

fehler=0

rmdir /pfad/.test_ordner_tmp >/dev/null
if mkdir /pfad/.test_ordner_tmp >/dev/null ; then
rmdir /pfad/.test_ordner_tmp >/dev/null
fehler=0
else
fehler=1
fi

if [ "$fehler" = "1" ] ; then
echo "Fehler"
else
echo "Alles i.O."
fi

Gruß, Hermann
 

Hermann

Hacker
Hallo torbla, noch eine Möglichkeit:

#!/bin/bash
sudo smbmount //PC/Freigabe /mnt-punkt -o username=tux, uid=tux,password=tux
wert=$?

der Exit-Code des letzten aufgerufenen Programms ist in der Variable $? abgelegt.

Hier gibt es eine Anleitung zur Shell-Programmierung die man downloaden kann:
http://www.selflinux.org

Gruß, Hermann
 
OP
torbla

torbla

Member
Hallo hat funktioniert das Problem lag im Schleifenkopf der Fehler lag bei = es ist aber richtig -eq :) und schon funzt es danke für das script das hat mir sehr geholfen.
 
Oben