The UNIX and Linux Forums  


Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com



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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 09-09-2006
pokeycam pokeycam is offline
Registered User
  
 

Join Date: Sep 2006
Posts: 2
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.
  #2 (permalink)  
Old 09-09-2006
pokeycam pokeycam is offline
Registered User
  
 

Join Date: Sep 2006
Posts: 2
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

  #3 (permalink)  
Old 09-12-2006
Andrek Andrek is offline
Registered User
  
 

Join Date: Aug 2006
Posts: 122
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.
  #4 (permalink)  
Old 09-12-2006
ghostdog74 ghostdog74 is offline Forum Advisor  
Registered User
  
 

Join Date: Sep 2006
Posts: 2,557
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...
  #5 (permalink)  
Old 09-13-2006
Andrek Andrek is offline
Registered User
  
 

Join Date: Aug 2006
Posts: 122
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.
Closed Thread

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 05:10 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0