hi, unix wizards,
Ik heb een vraag over de logica van mijn binnenste lus hieronder. ten eerste, wat ik probeer te doen is om een script te schrijven create_account dat automatisch mysql rekeningen. kan de gebruiker een gebruikersnaam of een group_id als argument (en het script kunnen meerdere argumenten). user_name argumenten moeten simpelweg worden toegevoegd aan een user_file.
groep-id's moeten worden vergeleken met een bestand dat een lijst van group_ids met meerdere user_names per id. Als de groep id bestaat, dan pak alle gebruikers en voeg deze aan de user_file. als de groep-id niet bestaat, print "groep ID niet geldig".
Natuurlijk, het eerste wat ik moet doen is het valideren van het argument - indien het een nummer van een bepaald type, ik neem aan dat het een group_id. anders is het een user_name. btw, "is_num" is een functie te valideren wanneer het argument is een aantal (en dus een group_id).
----------------------------------------------
krijgen arg
- Als argument is een aantal
- vervolgens valideren group_id
- Als num is ongeldig group_id,
- Vervolgens print "groep ID niet geldig"
- Als num is geldig group_id
- vervolgens geparseerd group_id_file en grijper gebruikers 4e veld op
----------------------------------------------
mijn code werkt goed als ik nog maar een argument en het maakt niet uit of het argument is geldig group_id, een ongeldige group_id, of een gebruikersnaam. maar als ik gebruik van meerdere parameters, de problemen met mijn code zijn:
- user_name argumenten zijn om door de binnenste lus en dient niet te worden omdat ze niet langs de is_num functie criteria
- commando's met meerdere parameters lopen alle argumenten meerdere malen
- bijvoorbeeld, als ik het zeggen ...
Code:
create_acct valid_num invalid_num
... Ik krijg een lijst met alle geldige gebruikers Keer 2
Ik vraag me af of iemand heeft de tijd om me in de goede richting. bedankt voor je hulp.
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