![]() |
|
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here. |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| some information on error checking | vinayrao | Shell Programming and Scripting | 1 | 03-14-2008 12:07 PM |
| Need help with error checking | xianoth | Shell Programming and Scripting | 0 | 08-31-2007 12:47 PM |
| Error code checking | jepombar | Shell Programming and Scripting | 3 | 08-21-2007 02:50 PM |
| Disk health & error checking | hcclnoodles | SUN Solaris | 2 | 10-18-2006 10:33 AM |
| error checking in bash | gubten | Shell Programming and Scripting | 3 | 06-06-2006 05:38 PM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Error Checking Problem
Here is my problem I’m designing a script that will have to accept user input from the command line using the read command. The problem is that I have to check the input which should be in the format of <first name> <last name> <phone number (8 digits long)> The input can also be Just <first name> Or just <last name> Or <phone number> I need a way to test this input before I pass it to grep with a text file that has stored names and phone numbers i.e Stephen Smith:12345678 The user should be able to search using the first name, last name or the phone number for example a user types in Stephen, the entry in the text file should display. The test should include that no numbers are in the first and last names and that the phone number does not start with a 0 (zero). These are just errors checks which will display a message to user if they have entered it in incorrectly. Any help would be appreciated. Thanks :-) Here is some code that I've done Code:
#!/bin/sh $entryType echo "Please search: \c" read text case $text in [a-zA-Z]*[' '][0-9*] entryType='3' ;; [a-zA-Z]*) entryType='1' ;; [0-9]*) entryType='2' ;; *) entryType='4' ;; esac if test $entryType -eq 3; then grep -i $text textfile.txt fi *Code is incomplete and just tries to establish what sort of input the user made, so now I just need to test it and if it passes then I can pass it to grep to look it up in the texfile. If its not in the textfile I will then add it. |
|
||||
|
I've tried to do it with appending the read of the user to a text file and then reading it back in using grep. Here is the code below, still not complete. Code:
#!/bin/sh
$entryType
read text
echo $text > output.txt
case $text in
[a-zA-Z]*[' '][a-zA-Z]*[' '][0-9]*) entryType='3' ;;
[a-zA-Z]*[' '][a-zA-Z]*) entryType='4' ;;
[a-zA-Z]*) entryType='1' ;;
[0-9]*) entryType='2' ;;
*) entryType='5';;
esac
if test $entryType -eq 1; then
if egrep "[a-zA-Z]*" output.txt; then
grep -i $text teledir.txt || echo "No such entry"
else
echo "Invaild name"
fi
fi
if test $entryType -eq 2; then
if egrep "[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" output.txt; then
grep -i $text teledir.txt || echo "No such entry"
else
echo "Invaild phone number"
fi
fi
if test $entryType -eq 3; then
if egrep "[a-zA-Z]*[' '][a-zA-Z]*[' '][0-9]*" output.txt; then
grep -i $text teledir.txt || <write to text file> | echo "New
entry $text added"
else
echo "Invaild phone number"
fi
fi
if test $entryType -eq 4; then
if egrep "[a-zA-Z]*[' '][a-zA-Z]*" output.txt; then
grep -i $text teledir.txt || echo "No such entry"
else
echo "Invaild name"
fi
fi
|
|
||||
|
Hi,
Get your input from the read command, then check to make sure you only have A-z and 0-9 then you can safely grep through your file. try this..... #!/bin/sh echo "Enter search string :\c" read var if [ -z `echo $var | tr -d "[:alnum:]"` ] then grep -i $var filename else echo "Invalid characters in your serach string" echo "try again...." fi Basiclly remove all the GOOD characters (A-z,0-9) and if nothing is left the entered search string is OK to be used. Put it in a loop and you can keep going around until the user gets it right. |
|
||||
|
hi
is there any reason that you need to check that the names do not contain numbers and stuffs like that?? i could just use grep to search against your telephone directory using the search term, and simply flag out to user "Entry not found" , if it does not match what user types in. If need be, i can just provide a simple help message telling the user what he can or cannot enter as a search term when the grep fails.. It would be simpler this way..well at least to me... |
|
||||
|
No you can take the input as is. I read your post as being, "need to check input before passing to grep" Hence that code. (Checking for non printable characters)
Other wise don't bother and just let grep do its thing. A though just crossed my tired mind... you could use tr to delete any non printable characters first. just a thought. |
![]() |
| Bookmarks |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|