Visit Our UNIX and Linux User Community


getopts


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting getopts
# 1  
Old 03-25-2005
getopts

I have a script which fires a command based on certain parameters. I am posting the code below..

The options needs be given such that
-u option goes along with -d and -s, -f goes with -d and -t goes with -s and -d.
1) How do I ensure that user misses any of the option then he should be prompted . Is it simple if then else where I check the length of string of all these options.

USAGE="Usage: `basename $0` [-s schemaname] [-d databasename] [-u username] -f -t -h"
while getopts :s:d:u:fth params
do
case $params in

s) SOURCESCHEMA="$OPTARG" ;;

f) FULL='y' ;;

t) TABLE='y' ;;

d) DBNAME="$OPTARG" ;;

u) USERNAME="$OPTARG" ;;

h)
help_doc
exit 0
;;

?|Smilie
echo "Invalid Option Specified"
echo "$USAGE" 1>&2 ; exit 1
;;

esac

done


Thanks..
# 2  
Old 03-25-2005
You could do it a couple ways, one - by adding a checksum count to each case. At the end of the getsopts statement and before any other code is executed, check to see if the checksum value is what is expected. If you dont like this approach, take the easy way and evaluate $#. $# holds a count of the number of command line arguments passed to the script.
# 3  
Old 03-26-2005
I added this line at the end of the script (after getopts), maybe the approach is wrong..

if [ $# -eq "3" ]; then
"Option 1 specified -s -d -u"
elif [ $# -eq "2" ]; then
"Option 2 specified -d and -f"
fi

However $# always evaluates to 6 if provide the option
scriptname -d databasename -u username -s schemaname. How did it arrive at 6 ?
# 4  
Old 03-26-2005
I think I got it now.
If i provide scriptname -s schema -u user -d database, $# evaluates to 6 based on no of options and its values. (-s schema) 2, (-u user) 2 and (d database ) 2.

So if it is -d database -f it evaluates to 3 (-d database)2 and (-f) 1.
If he specifies -d database and -t ( That too evaluates to 3) .

How do i check if he has specified -t or -f then ?
# 5  
Old 03-26-2005
I didnt test this at all, just a thought I had. Im sure there are a million ways to do this.

Code:
USAGE="Usage: `basename $0` [-s schemaname] [-d databasename] [-u username] -f -t -h"
while getopts :s:d:u:fth params
do
   case $params in
     s) SOURCESCHEMA="$OPTARG"
        let COUNT= $COUNT+10000
         ;;
     f) FULL='y'
         ;;

     t) TABLE='y'
         ;;

     d) DBNAME="$OPTARG"
         let COUNT= $COUNT+1
        ;;

     u) USERNAME="$OPTARG"
         let COUNT= $COUNT+1000
         ;;
     h) 
         help_doc
         exit 0 
         ;;
     ?) 
         echo "Invalid Option Specified"
         echo "$USAGE" 1>&2 ; exit 1 
         ;;
   esac

if [ "$COUNT" -ne 10101 ]
  then
    help_doc
    exit 0
elif [ ! -z $FULL ]
   then
      echo "Paramater FULL is Set"
elif [ ! -z $TABLE ]
   then
      echo "Paramater TABLE is Set"
else
    echo "Neither TABLE or FULL Are Set"
fi

# 6  
Old 03-26-2005
I was able to do it with the $#. Thanks for the help..

Previous Thread | Next Thread
Test Your Knowledge in Computers #376
Difficulty: Medium
HP-UX was UNIX V7 compliant.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Using getopts

Hi. Can somebody please show me an example of how to use getopts to assign a variable if it's been passed into the script but to set a default if no value has been passed in? And also how to handle a param with multiple values ... so a sub parse (can I use a function for this?)? Here's my code... (1 Reply)
Discussion started by: user052009
1 Replies

2. Shell Programming and Scripting

Getopts help

Hi All, I am writing a script to pass the getopts argument to the function which I have. But it as soon as I execute the script, the argument is taking it as blank. I tried using multiple way to check but its not working. Can someone please let me know what wrong in this code. function1()... (4 Replies)
Discussion started by: sidh_arth85
4 Replies

3. UNIX for Dummies Questions & Answers

Getopts

while getopts v OPTION do case $OPTION in v) echo "Hello" ;; *) exit 1;; esac done Suppose I have script tmp.sh Whose Signature is tmp.sh <fixed_argument> When I run the script with tmp.sh -v "file", it echoes a hello but, when I try the other way i.e, tmp.sh... (1 Reply)
Discussion started by: Devendra Hupri
1 Replies

4. Shell Programming and Scripting

Using getopts. Need help

Hi all... I have been looking on here for the past few days for an answer and Im gonna have to break down and ask. I just learned about the getopts command last week so have been trying to utilize it in my scripts. Below, I am trying to set up a case structure for options using getopts.... (1 Reply)
Discussion started by: losingit
1 Replies

5. Shell Programming and Scripting

getopts help

First off, I apologize for my lack of knowledge. I realize my problem will probably seem pretty basic to everyone, but I've been at this for several hours now and I've gotten nowhere. I would contact my professor, but it is too late for that. Anyway, I'm trying to write a function called... (1 Reply)
Discussion started by: Unknown50862
1 Replies

6. Shell Programming and Scripting

using getopts

Hi, I have a program where I want to use getopts. I want to use "-i" option and then optionally supply arguments. If user dosent supply arguments, then also it should work. Please tell me how to proceed. Here is some code, this is not right code btw but a sample to understand what I want to... (1 Reply)
Discussion started by: som.nitk
1 Replies

7. Shell Programming and Scripting

Using getopts

I am having some trouble/questions with getopts that I can't find any solid info on with google I need it to parse things of the syntax of: -r # # # -f -c with as many repeats as possible, and it should catch erroneous commands also, but continue going... my first question is, -r... (3 Replies)
Discussion started by: TurboArkhan
3 Replies

8. HP-UX

using getopts

Is there a restriction on levels of using 'getopts' ? I have several scripts, each of which requires an option as the first parameter . If I call one prg separately it works fine, but when one prg calls another prg and passes the option on the called prg, then the called prg seems not to process... (3 Replies)
Discussion started by: vslewis
3 Replies

9. Shell Programming and Scripting

Help in getopts

Hi, My script will take a input file as a parameter(which is not mandatory) and also an option. ksh my_script.sh <inputfile> The option -n I have given is no way related to the input file. Now the problem here is when i execute the script specifying the input file and the option(the way... (4 Replies)
Discussion started by: chella
4 Replies

10. Shell Programming and Scripting

getopts

I have a script that facillitates NDM (Connect::\Direct) transfer to remote hosts. This script uses getopts to parse through the parameters passed to it and to set appropriate variables based upon what was passed in. Kickoff="mv $PATH/$FILE1 $PATH/$FILE2" ndm_shell.ksh -p $Node -s $Source -d... (3 Replies)
Discussion started by: google
3 Replies

Featured Tech Videos