Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Loops
# 1  
Old 09-26-2011

Hi All,
I am very new to Shell scripting. I read basic scripting manual. But i didn't understand the code. Please tell the meaning of the below code:
    while getopts "F:f:R:r:C:c:" opt 2>/dev/null
        case ${opt} in
                F|f) FREQUENCY_MODE=$OPTARG;;
                R|r) REQ_NUM=$OPTARG;;
                C|c) COMMON_PROFILE=$OPTARG;;
                *) showUsage;
                exit $EXIT_INVOCATION_ERROR;;

Thanks in advance .................


Last edited by Scott; 09-27-2011 at 12:17 AM.. Reason: Please use code tags
# 2  
Old 09-26-2011
This is validating and storing the command line arguments to a script using the external program getopts

See this for a discussion on how it all works.
# 3  
Old 09-26-2011
Thanks for the quick reply.
I read the information "getopts" in the provied link.
But i didn't understand "opt 2>/dev/null" in the first line and "*) showUsage;" in the 7th line.
Please expain the overall one time.

Thanks in advance................

# 4  
Old 09-26-2011
opt 2>/dev/null this is just redirecting anything output to stderr (typically getopts will print some sort of message about illegal options eg "getopts: -i option unknown" to sterr). For example:
$ cat opt_eg
getopts p: opt 
echo opt is $opt
getopts p: opt 2> /dev/null
echo opt is still $opt
$ ./opt_eg -j
./opt_eg: illegal option -- j
opt is ?
opt is still ?

This program just throws away the error message from getopts and calls showUsage instead. There is a good chance that showUsage is an internal function to this script.

getopts sets $opt to ? if an invalid arugment is detected, the *) clause of the case statement picks up any value not matched by the other case clauses so it grabs ?, or any other value not listed above and calls showUsage.

The assumption is that showUsage would then exit (probably with some non-zero exit code) otherwise you will get usage output listed for every invalid option passed to the script.

Last edited by Chubler_XL; 09-26-2011 at 11:45 PM..
This User Gave Thanks to Chubler_XL For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Need help with for loops

Why wont my for statements work? Im trying to get this script to swich to a user an if you put in a start/stop/or restart paramater to do just that for each user. I commented out the actual start/stop actions to test it just by using echos and not do anything hasty in the environment but it... (0 Replies)
Discussion started by: LilyClaro
0 Replies

2. UNIX for Dummies Questions & Answers

loops with tr

Hello, I'm not sure if this is more appropriate for the 'unix for dummies' or the 'unix for experts' forum because I'm new to this forum and this is the second topic I've discussed, but if you could let me know which one was more appropriate for something like this, please do! So in tr (an... (2 Replies)
Discussion started by: juliette salexa
2 Replies

3. Shell Programming and Scripting


Hi All, I want to execute a script the number of times a user enters. Please can you advise on hor can I do the same. Many Thanks, Shazin (4 Replies)
Discussion started by: Shazin
4 Replies

4. Shell Programming and Scripting

Help with the 2 for loops

#!/bin/bash IFS=$'\n' A= a c b t g j i e d B= t y u i o p counter=0 found="" for i in $(cat $A) do for j in $(cat $B) do if then found="yes" fi done if then (1 Reply)
Discussion started by: vadharah
1 Replies

5. UNIX for Dummies Questions & Answers

Help with While Loops

I am traversing down a list, and I am not quite sure how to tell the loop to break when it's done going through the file. #!/bin/sh while : do read list <&3 echo $list done is the code. The file "list" is simply 5 4 3 2 1 any advice on how to break the loop after the file is... (1 Reply)
Discussion started by: MaestroRage
1 Replies

6. Shell Programming and Scripting

while loops

Hi I've a file like so: Now, I want to read my file and take ex. the Media ID and the Type for each groups of Media (Media1,Media2,...,Media(n): cat /tmp/file|\ while read FILE do while $(FILE|cut -d: -f1)=Media$i do #here will be some test, ex: #if Media ID < 23 ... (4 Replies)
Discussion started by: nymus7
4 Replies

7. UNIX for Dummies Questions & Answers

two loops

Hi, how can I use "for" to have two loops : this is my script : for i in (A B C) do for j in (a b c) do echo $i$j done done #End I want to print out Aa Ab Ac .... But I have error message : syntax error at line 1 : `(' unexpected Many thanks before. How should I use "for" ?? (2 Replies)
Discussion started by: big123456
2 Replies

8. UNIX for Dummies Questions & Answers

While Loops

I'm trying to create a loop that will prompt the user for 15 values, not forcing them to enter all 15. If the user enters through one or more of the prompts the null value needs to be converted to 0, otherwise set the parameter = to the value entered: ex. Please enter file no #1: 17920 ... (4 Replies)
Discussion started by: vdc
4 Replies

9. Shell Programming and Scripting

Loops within loops

I am running on HPUX using ksh. I have a script that uses a loop within a loop, for some reason the script seems to hang on a particuliar record. The record is fine and hits the condition in Blue. If I kill the 1st loop process the script continues on with no problem. Begin code> <Some... (8 Replies)
Discussion started by: bthomas
8 Replies

10. UNIX for Dummies Questions & Answers


hello....very new user to unix...and i have a question..i am not sure if there is such a thing For example...the user is asked if he likes Bananas....if he says yes.... echo You like Bananas $name at the end of the script it echos all that the user has entered so they can read it.... but... (1 Reply)
Discussion started by: jonas27
1 Replies
Login or Register to Ask a Question