Frage zu kleinem Bash Script

Jurij

Lt. Commander
Registriert
Juni 2008
Beiträge
1.247
Hallo,
wir haben in der Schule folgendes Bash Script bekommen:

unsereKlasse.sh
Code:
#!/bin/bash

for i in $(cat unsereKlasse.conf);

do

BENUTZER=$(echo $i | cut -d: -f1)
PASSWORD=$(echo $i | cut -d: -f2)
GRUPPE=$(echo $i | cut -d: -f3)

useradd -g $GRUPPE -m $BENUTZER -p $(/root/Desktop/C/mycrypt $PASSWORD '$1$1Xebi7Dl$')

done

Dann die Datei unsereKlasse.conf
Code:
meier:123456:klasse
mueller:123456:klasse
bauer:123456:klasse

Kurze Erklärung was das Script macht:
Es nimmt die Daten aus der Datei unsereKlasse.conf und fügt dann jeweils einen Nutzer hinzu. Die mycript Datei besteht nur aus einem kleinem C-Programm, welches das Passwort verschlüsselt, damit der Befehl useradd klappt.
Meine Frage bezieht sich nun auf die for-Schleife.
Mein Lehrer meinte, das die datei unsereKlasse.conf Zeilenweise eingelesen wird, nur irgendwie leuchtet mir des nicht ganz ein. Kann mir das jemand vielleicht erklären woran man des sieht??

Danke =)
 
Weils ne For-Schleife ist ;)

Anders als in anderen Programmiersprachen/Scriptsprachen wird hier eine Liste von Strings durchgegangen. Jedes Listen-Element endet mit einem new-line Befehl.

cat unsereKlasse.conf schreibt für gewöhnlich die Datei auf Stdout.
Durch die For-Schleife wird nun jede Zeile als Listen-Element benutzt.
Also geht die For-Schleife zuerst mit dem String "meier:123456:klasse" in den Befehlsblock, dann mit "mueller:123456:klasse", usw.
 
Okay, verstehe.
Und wenn kein Listen-Element mehr vorhanden ist, wird die Schleife abgebrochen, richtig?
 
Jop.
Wenn cat nichts mehr liefert bzw. wenn der Prozess von cat beendet wurde, ist die Schleife am Ende.
 
Okay, danke dir.
 
Zurück
Oben