Validate if string part of a list


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Validate if string part of a list
# 1  
Old 06-17-2013
Validate if string part of a list

I have this requirement of validating input from user to be one of a list of strings. I validate it as below.

Code:
case $1 in
Jan)
     ;;
Feb)
     ;;
.
.
.
Dec)
      ;;
*)
   echo "Invalid input. Should be one of the following."
   echo "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
   ;;
esac

This works fine, but I wanted to know better ways to do this. This code looks lengthy and I'm sure there are more efficient ways to achieve this.
# 2  
Old 06-17-2013
Code:
echo $1 |egrep '^(Jan|Feb|Mar|Apr|may|Jun|Jul|Aug|Sep|Oct|Nov|Dec)$' || echo "Invalid Month entered";

This User Gave Thanks to Skrynesaver For This Post:
# 3  
Old 06-17-2013
If your shell is halfway current, this should work without calling external commands:

Code:
if [[ $1 != @(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ]]
then
   echo "Invalid input. Should be one of the following."
   echo "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
fi

This User Gave Thanks to hergp For This Post:
# 4  
Old 06-17-2013
Thanks. I was thinking of egrep but was not getting it spot on.
# 5  
Old 06-17-2013
You could do a little trick, something like:

Code:
~$ months=( Jan Feb Mar Apr May Jun )
~$ input=Feb
~$ for i in ${months[@]}; do echo $i; done | grep -c $input
1
~$ input=other
~$ for i in ${months[@]}; do echo $i; done | grep -c $input
0

# 6  
Old 06-17-2013
With awk
Code:
echo $1 | awk '/^(Jan|Feb|Mar|Apr|may|Jun|Jul|Aug|Sep|Oct|Nov|Dec)$/ {print "Invalid Month entered"}'

or
Code:
awk '/^(Jan|Feb|Mar|Apr|may|Jun|Jul|Aug|Sep|Oct|Nov|Dec)$/ {print "Invalid Month entered"}' <<< $1

# 7  
Old 06-17-2013
Code:
Months="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
m=Jun
[ "$Months" != "${Months/$m}" ] && echo in || echo out
in
m=Jux
[ "$Months" != "${Months/$m}" ] && echo in || echo out
out

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Extracting a part of a string

Hi, I needed to extract some specific characters from a string based on user input. For example: After the script executes the user enters the following details: Please enter the string: This is a shell script Please enter the starting position: 11 Please enter the number of characters to be... (4 Replies)
Discussion started by: ChandanN
4 Replies

2. Shell Programming and Scripting

Deleting part of a string : string manipulation

i have something like this... echo "teCertificateId" | awk -F'Id' '{ print $1 }' | awk -F'te' '{ print $2 }' Certifica the awk should remove 'te' only if it is present at the start of the string.. anywhere else it should ignore it. expected output is Certificate (7 Replies)
Discussion started by: vivek d r
7 Replies

3. Shell Programming and Scripting

Need to take one part from a string

I have a string something like "/opt/src/default.cfg" OR /opt/src/common/one This whole string stored in an array. The problem is this string is not constant and it will keep on changing as lot of strings are stored in the array and it will be look like :- case 1 /opt/src/default.cfg ... (8 Replies)
Discussion started by: Renjesh
8 Replies

4. Shell Programming and Scripting

extract last part of string.

Hi, I have a string like this BUNDLE=/home/bob/flx/user.bun how to extract only the the last part ie, only user.bun (2 Replies)
Discussion started by: vprasads
2 Replies

5. Shell Programming and Scripting

Part of a string

Hi mates, I am doing a script in ksh. I have the following string: /opt/one/two/four/five/myFile.txt And I have a variable: echo "${variable}" -> /opt/one/two/ I would like to have just the string: four/five/myFile.txt What is the better way to do that? Thanks in... (3 Replies)
Discussion started by: gonzaloron
3 Replies

6. Shell Programming and Scripting

validate a string against a regular expression

Hi there i have a script which will create unix user accounts. Id like to validate the entered string so that it is specifically 8 characters or less and consists of only ! not Is there a way to validate a string against a regular expression.. i.e size=`printf "$var | wc -m` ... (1 Reply)
Discussion started by: hcclnoodles
1 Replies

7. Shell Programming and Scripting

Getting part of a string

Hi, I have a string assinged to a varaible as below. FILE=/var/adm/message If $FILE is the value where it stores the path of message file. I would like to extract the location of the file message as below LOCATION=/var/adm FILE may have value like /var/adm/xxxx/message ... (2 Replies)
Discussion started by: raghu.amilineni
2 Replies

8. UNIX for Dummies Questions & Answers

Printing a part of a string

hi I have the input as follows ABC =893 JKL = "jee" alias PQR = 9833 alias STUVE = "kuiue" I should be able to print as follows ABC JKL alias PQR alias STUVE Thanks Suresh (7 Replies)
Discussion started by: ssuresh1999
7 Replies

9. Shell Programming and Scripting

Need help regarding replacing a part of string

Hi all suppose i have a string "abacus sabre", i need to replace occurences 'ab' with 'cd' and i need to store this result into same string and i need to return this result from script to the calling function, where as the string is passed from calling function. i tried like this ... (1 Reply)
Discussion started by: veerapureddy
1 Replies

10. Shell Programming and Scripting

Finding part of a string

Hi I am very new to KSH programming and need some help with finding a string in an error log currently i am doing cat FTP_LOG.lis | grep Warning which gives me Warning: Authentication failed. Remaining authentication methods: 'publickey,pas I want to only pick up the test between the... (4 Replies)
Discussion started by: DAFNIX
4 Replies
Login or Register to Ask a Question