Problem mit if in der while Schleife...

Linuxneuling

Linuxneuling

Tripel-As
Moin,

wie kann ich im Skript if zum Laufen bringen, da if in der while Schleife verschachtelt ist. Punkt 2 (User erstellen bzw. einer Gruppe zuweisen) funktioniert nicht... Ist das überhaupt möglich if in der while zu verschachteln?

Code:
#!/bin/bash

schleife=1
while [ $schleife=1 ]
do
printf "                1:User erstellen\n\n"
printf "                2:User erstellen bzw. einer Gruppe zuweisen\n\n"
printf "                3:Ende\n\n"
read ART
case $ART in
# case1
1)
echo "Bitte geben Sie den Username an:"
read NAME
echo "Bitte geben Sie die UID an:"
read user
echo "User \"$NAME\" wird mit UID \"$user\" erstellt"
echo
useradd -M -s /bin/false -u ${user} ${NAME}
echo
passwd ${NAME}
echo
echo "User \"$NAME\" wurde erstellt bzw. Passwort gaendert"
;;
#case 2
2)
printf "Bitte geben Sie den Username an:\n\n"
read NAME
printf "Bitte geben Sie die Gruppe an:\n\n"
read GRUPPE
printf "Jetzt wird die Datei /etc/groups ueberprueft, ob die Gruppe vorhanden ist.\n\n"
grep -w '$(GRUPPE)' /etc/group

        {if [ $? -eq 1 ] then 'groupadd ${GRUPPE}' && printf 'Die Gruppe $(GRUPPE) wurde erstellt!\n\n
                                else printf 'Gruppe \"$GRUPPE\" existiert bereits!\n\n
                fi}
useradd -M -s /bin/false -g ${GROUP} ${NAME}
printf "User \"$NAME\" wird erstellt und der \"$GRUPPE\" zugeteilt.\n"
;;

#case 3
3)
break
;;


*)
echo "Die Auswahl ist ungueltig"

#case ende
esac
#while ende
done
#rueckgabewert bei erfolg ist 0
exit 0

Folgende Meldung erhalte ich nach Ausführen des 2. Punkts:
Code:
user: line 34: {if: command not found
user: line 36: fi}: command not found
useradd: Unknown group `username'.
User "username" wird erstellt und der "gruppe" zugeteilt.

Irgendwie ist ein Fehlerteufel eingeschlichen, dass blöderweise die username als Gruppe interpretiert wird :-(
 
gib mal die geschwungenen klammern {} vor if und nach fi weg
 
ninguno schrieb:
gib mal die geschwungenen klammern {} vor if und nach fi weg

dann funzt das skript überhaupt nicht mehr:
Code:
user: line 36: syntax error near unexpected token `fi'
user: line 36: `                fi '
 
da sind so viele syntaxfehler drin, man weiss gar nicht wo anfangen...
aber ersetz mal dein if statement durch das folgende:
Code:
if [ $? -eq 1 ]
then
  groupadd ${GRUPPE}
  printf 'Die Gruppe %s wurde erstellt\n\n' ${GRUPPE}
else
  printf 'Die Gruppe %s existiert bereits!\n\n' ${GRUPPE}
fi
 
Danke! Jetzt funktioniert das Skript! Langsam lerne ich die Syntakfehler kennen :-)
 

Ähnliche Themen

script sshpass

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

Port generieren, wenn nicht dann

Problem mit Win-Zugriff auf SAMBA

continue in Schleife einbauen

Zurück
Oben