Erstmal ein Hi an alle, freut mich Teil eurer Community zu werden.. 😉
Ich bin noch ein relativer Neuling was Unix und Shellprogrammierung angeht und wollte daher mal mit etwas einfachem anfangen.
Ich wollte ein kleines Script schreiben, dass einen User in der Datei ../passwd sucht und wenn es ihn gibt soll er mir die Einträge dazu ausgeben. Wenn ein User nur die ganze Zeit nur die Eingabetaste drückt, soll er weiterhin nach einem Usernamen gefragt werden.
Die Sinnhaftigkeit dieses Programmes ist mal Nebensache ;-P Will einfach mal bisschen, if und while Schleifen üben..
Hier mein bisheriges Script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | read -p "Welcher User soll überprüft werden?:" SEARCH_USER ## User wird nach einer Eingabe gefragt, diese wird in der Variable SEARCH_USER gespeichert if [ -z $SEARCH_USER ] ## Wenn keine Eingabe(z.b. nur Enter) erfolgt ist, geht es in der while-Schleife weiter. Ansonsten bei der Variable zwischen. then while [ -z $SEARCH_USER ] ## Solange wie keine Eingabe erfolgt, soll nachfolgender Befehl durchgeführt werden. do read -p "Welcher User soll überprüft werden?:" SEARCH_USER ## User wird solange nach einer Eingabe gefragt bis diese eine Wert hat der nicht leer ist done fi zwischen=$(grep $SEARCH_USER /etc/passwd) ## in der Variable 'zwischen' soll die Ausgabe von grep $SEARCH_USER /etc/passwd gespeichert werden, damit diese später auf seine Richtigkeit ## ## geprüft werden kann. (Hier bin ich mir nicht sicher ob das eine vernünfige Lösung ist) if [ -z $zwischen ] ## Hier soll geprüft werden, ob der übergebene Wert an die Variable SEARCH_USER in der Datei passwd vorhanden ist. Wenn dies nicht der Fall ist then echo "User nicht vorhanden " ## wird dieses Echo ausgegeben. else echo "User ist mit folgenden Einträgen vorhanden: " ## Wenn der übergebene Wert an die Variable SEARCH_USER in der Datei passwd vorhanden ist, wird dieses echo ausgegeben mit Einträgen(zwischen) echo $zwischen fi |
Nun erhalte ich, wenn ich nicht schon bei der ersten Eingabe einen richtigen Wert übergebe, die Meldung:"
Zeile 16: [: Zu viele Argumente.
Die Befehle danach werden trotzdem korrekt ausgeführt..
Das ist die Zeile " if [ -z $zwischen ] "
Das Argument wäre in diesem Fall ja -z $zwischen. Hat hier die Variable 'zwischen' zu viele Eingaben erhalten? Wie kann man das lösen? Wird die Variable SEARCH_USER in der while-Schleife bei jedem "Enter" befühlt und dies gilt als Argument? Macht es Sinn, dass man den Inhalt der Variable vorher löscht, sodass diese nur einen Wert hat?
Danke schonmal für eure Hilfe!
Lg und einen schönen Tag
EDIT: Code in Codeblock geschrieben
EDIT2: Ersten zwei Zeilen wurden gelöscht, damit die Meldung: Zeile 16: [: Zu viele Argumente." auch hier korrekt zu sehen ist 😉