Visit Our UNIX and Linux User Community


Help with getopt


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with getopt
# 1  
Old 11-09-2008
Help with getopt

Hi,

I want to use the getopt function to parse some arguments for a script.

Code:
while getopts "i:f:r:" OPTION
do
 
    case $OPTION in

    i)  iter=$OPTARG;;
    f)  frame=$OPTARG;;
    r)  roi=$OPTARG;;       
    ?)  echo Usage: ......
        exit 2;;

    esac
done

However, I want the -r flag to parse more than 1 argument. That is, the usage of this sript to be like:

script.sh -i [number] -f [frames] -r [roi1 roi2 roi3....]


The code that I already have parses only the first argument after -r (i.e. roi1). What do I have to change in order to parse all the arguments after the flag -r?

Thanks a lot in advance!
giorgos
# 2  
Old 11-09-2008
you can put quotes around the multiple arguments, the the shell would pass them through as one (and getopt should do the same)
or have mutltiple -r statements and alter the code to add to the roi variable rather than overwriting it
# 3  
Old 11-09-2008
Thanks for your response!

Yes, this makes sense... I tried before the double quotes and it worked... but I was wondering if there was a way to do this without the double quotes...

Thanks, though!
# 4  
Old 11-09-2008
well you could monkey with the IFS variable in bash, but that would throw up even more headaches. Basically, you need to stop the shell from reading the spaces as spaces (i.e. field seperators) so you could also quote each individual space by backslashing it.
I think the easiest way is to enforce multiple -r <option> on the command line, and alter the code accordingly.
# 5  
Old 11-09-2008
How could i enforce multiple option?

Ok... it seems to be too difficult for me.... I should probably give up on this...

I'll try to implement differently my code! Thanks a lot for your response!

Last edited by giorgos193; 11-09-2008 at 09:47 AM..
# 6  
Old 11-10-2008
you could ditch the -r requirement and have it's options as the last parameters on the command line.
Code:
while getopts "i:f:r:" OPTION
do
 
    case $OPTION in

    i)  iter=$OPTARG;;
    f)  frame=$OPTARG;;  
    ?)  echo Usage: ......
        exit 2;;

    esac

done

# remove any arguments found so far
shift $(($OPTIND - 1))
# here roi will be the remaining arguments on the command line
roi="'$*'"

the roi variable will now have the rest of the command line, so if it was called thus:
Code:
application -i 2 -f 3 roi1 roi2 roi3

then the output would be:
Code:
$iter==2
$frame==3
$roi=='roi1 roi2 roi3'

and if you didn't want the roi variable to be quoted, as I have it here, then remove the single quotes around '$*' on the line in red above.
Hope this helps, and never give up, it is never tooooo difficult.

Previous Thread | Next Thread
Test Your Knowledge in Computers #696
Difficulty: Medium
The Cathedral model, in which source code is available with each software release, but code developed between releases, is restricted to an exclusive group of software developers.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Getopt Help

Hi All, An old work friend wrote a script which I've been trying to understand how a section of it currently works and work out how i can add some command line switches which i can use later in the script to append the output depending on the command line arguements. Currently it works by... (1 Reply)
Discussion started by: mutley2202
1 Replies

2. Shell Programming and Scripting

getopt in CSH

I am struggling to understand how getopt can be used in a csh script. can anybody post a csh script using getopt. Please! (4 Replies)
Discussion started by: animesharma
4 Replies

3. UNIX for Dummies Questions & Answers

Using Getopt Option

Hi I need to use getopt option and I have no idea what it is or how to use it. I need to use it on this awk script: awk -F, -v cellid="$1" -v paramval="$2" -v oldfile="$3" -v newfile="$4" '$2==cellid{$3=newvalue}1' OFS="," $3 > $4 I tried reading up on it but I just confuse... (2 Replies)
Discussion started by: ladyAnne
2 Replies

4. Shell Programming and Scripting

Use of getopt with and without argument

Hi, I am in middle of using some getopt command and am finding some issue. The usage of my script can be like this: abc.sh <-d | -p |-r> -online < 0 | 1> The first argument can be either -d or -p or -r. The second argument can be either -s and a id or a file name. So I am stuck up in writing... (2 Replies)
Discussion started by: sachin.ag
2 Replies

5. Shell Programming and Scripting

Help with Getopt::Std

I am working on a script that lists files in a directory with a few file attributes depending on what option the user specifies at the command prompt. The script uses Getopt::Std and takes two switches. The first switch allows the user to specify a directory, the second switch gives a long... (3 Replies)
Discussion started by: Breakology
3 Replies

6. Shell Programming and Scripting

getopt in perl

Hi, I have a perl script with two functions say func a and func b. sub a { ----------- --------- } sub b { --------- --------- } I want to use this function on command line as we can do in shell script using getopt. My motto here is to run the script like this ... (7 Replies)
Discussion started by: namishtiwari
7 Replies

7. Shell Programming and Scripting

getopt help

:) Can anybody help me about how to use getopt in shell scripting. (3 Replies)
Discussion started by: darshakraut
3 Replies

8. Shell Programming and Scripting

getopt help

I m trying to use getopt This is my script, but it doesn't take argument in variable, Please help. set - - `getopt mscl: $*` if then echo "Exiting...." exit 2 fi for i in $* do case $i in -m) MAIL="$i"; shift;; -s) SCRIPT=$OPTARG; shift;; -c) COB=$OPTARG; shift;;... (2 Replies)
Discussion started by: darshakraut
2 Replies

9. Shell Programming and Scripting

getopt

#!/bin/sh set -- `getopt "abco:" "$@"` a= b= c= o= while : do case "$1" in -a) a=1;; -b) b=1;; -c) c=1;; -o) shift; o="$1";; --) break;; esac shift done shift # get rid of -- # rest of script... # e.g. ls -l $@ (6 Replies)
Discussion started by: Hitori
6 Replies

10. Shell Programming and Scripting

getopt help

scriptname i have made a script to perform so tasks and i managed to complete the tasks for all the options the problem i am facing is that i can run the scripts individually but i would like to make it such that it can accept multiple options and give me the appropriate output e.g.... (1 Reply)
Discussion started by: problems
1 Replies

Featured Tech Videos