hi, Unix-Assistenten,
Ich habe eine Frage zu der Logik meiner inneren for-Schleife unten. erste, was ich zu tun versuchen, ist ein Skript namens create_account, dass MySQL automatisch erzeugt werden. Der Benutzer kann ein Benutzername oder eine group_id als Argument hat (und das Script kann mehrere Argumente). user_name Argumente sollten einfach an eine user_file.
Gruppen-IDs sollten verglichen werden, um eine Datei, die eine Liste der group_ids mit mehreren user_names pro ID. wenn die Gruppen-ID vorhanden ist, dann greifen alle Benutzer und die zu der user_file. wenn die Gruppen-ID nicht vorhanden ist, drucken "Gruppen-ID nicht gültig".
natürlich, das erste, was ich zu tun haben, ist das Argument zu validieren - wenn die eine Reihe von einer bestimmten Art, gehe ich davon aus der A-group_id. else, it's a user_name. btw, "is_num" ist eine Funktion, um, wenn das Argument ist eine Zahl (und damit eine group_id).
----------------------------------------------
Sie arg
- Argument ist, wenn eine Reihe
- dann Validierung group_id
- num ist ungültig, wenn group_id,
- dann drucken "Gruppen-ID nicht gültig"
- num ist gültig, wenn group_id
- dann analysieren group_id_file und greifen Benutzer vom 4. Feld
----------------------------------------------
mein Code funktioniert gut, wenn ich nur ein Argument, und es spielt keine Rolle, ob das Argument gültig ist group_id, eine ungültige group_id oder ein Benutzername. aber wenn ich mehrere Parameter, die Probleme mit meinem Code sind:
- user_name Argumente sind immer durch die innere for-Schleife und nicht, weil sie nicht an der is_num Funktion Kriterien
- Befehle mit mehreren Parametern laufen alle Argumente mehrere Male
- zum Beispiel, wenn ich sagen ...
Code:
create_acct valid_num invalid_num
... Ich bekomme eine Liste mit allen gültigen Benutzer mal 2
Ich frage mich, ob jemand die Zeit um mich in die richtige Richtung. Vielen Dank für Ihre Hilfe.
Code:
for arg; do
if is_num $arg; then
#----------------------------------------------
for num; do
a=$(grep "^c$num:" group_file)
if [ -z "$a" ]; then
print "Group ID " $num "is not in group file."
continue
fi
f4=$(echo $a | cut -d: -f4)
if [ -z "$f4" ]; then
print "Group ID " $num "does not have any users."
else
print $f4 | tr ',' '\n' >> user_list
continue
fi
done
#----------------------------------------------
else
echo $arg >> user_list
fi
done