hey guys
I would really appreciate some help, i need to do a project for a job that requires minimal UNIX scripting and im REALLY stuck
basically Im stuck at what i believe is something really simple but i just dont have a clue how to do it efficiently and properly and i REALLY appreciate some help
Basically i have a loop at which someone has to enter a string of 3 numbers.
-I want the code to check that the string is numbers only
-check that the numbers have not been already signed to someone else in the users.db file
-restrict the number of numbers to only 3.
each time the user inputs the number wrong i want it to be allowed to correct and tell why he has to re enter it.
This is the best i could came up with but IM REALLY suck and im at a short UNIX course (1 week) for a job....
Can anyone please tell how do i make the loop properly??
this is the best i could came up with... and i KNOW is crap... but i just dont know best........ I would really appreciate some guidance plz
#!/bin/bash
echo -e "Create a new record\n"
fSID (){
read -p "Please enter staff ID: " cSID
}
fSID
gcSID=$(grep $cSID users.db | cut -d ":" -f1 | tr [":"] [" "])
wcSID=$(echo $cSID | wc -c)
case "$cSID" in
[!0-9]* ) echo -e "The staff ID should contain only digits\n "
sleep 0.5
fSID;;
esac
while [ $wcSID -gt 4 ]; do
read -p "Please enter a value: " cSID
wcSID=$(echo $cSID | wc -c)
echo $wcSID
done
read -p "u passed to stage 2! gratz" st2
I really appreciate that you took the time to help me out
However, how do I tell the user then why they are re inserting the information then?
specially if the entry is already in the user.db
coz that code will do it over and over again until is right but the person will not know why they have to re enter the info
I asked what the users.db looked like too, and noted that my grep solution probably doesn't do what you want because I don't know what users.db looks like...
while true
do
read ID
if [ "${#ID}" -ne 3]
then
echo "wrong number of digits"
continue
fi
if ! [ -z "${ID/[0-9]*/}" ]
then
echo "Not all digits"
continue
fi
if grep "$ID" users.db > /dev/null
then
echo "The string '$ID' exists anywhere at all in users.db"
continue
fi
break # get out of loop
done