parse long input parameters


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting parse long input parameters
# 1  
Old 10-21-2008
parse long input parameters

anybody know a nice way to parse long input parameters such as --path /dir1/dir2/ (see below). Now I have more than 10 input parameters and it's confusing having parameters like -q something, I would prefer longer ones
Code:
case $OPTKEY in
    --path)   M_PATH=$OPTARG          ;;
    -s)   S_PATH=$OPTARG                ;;
done

I am using cygwin and it seems getopt is not available (only getopts)
cheers
# 2  
Old 10-21-2008
hi, extract from http://fvue.nl/wiki/Bash_and_Windows
Quote:
"It appears the `getopt' command is not ready available from Cygwin. And I can't find a package named `getopt' to install. Bash has a builtin `getopts', but this doesn't take care of long options.

Solution

Install the Cygwin package `util-linux'. This package provides `getopt.exe'. "
# 3  
Old 10-21-2008
thanks a lot
# 4  
Old 12-16-2008
How to parse long and/or short options in shell scripts

Hi ,

it has been a while since I have tried to parse command line arguments
made of both short and long options. There are many ways to do so but
not as many of them handle switch clustering in a flawlessly way. Here
is a snippet of code that illustrates my point. It is, however, far from
being straightforward (getopts is) since it requires to do the parsing
by hand. At last, the sample uses builtins commands only so the parsing
is expected to be optimal.


Code:
 
get_arg () {
    case "${#ARGSTR}" in
	0) test -n "$1" && logger "$1" && return 0 || { logger "--> -${OPTSTR} argument ?" >&2; return 1; } ;;
	*) logger "$ARGSTR"; return 2;;
    esac
}

At parsing time, OPTARG holds the last expected option argument.
Code:
 
while :; do 
    case "$#" in 0) break; esac; OPTSTR="$1" 
    case "$OPTSTR" in --) break   ;; 
             --flag_1) OPTSTR=-f1 ;;
             --flag_2) OPTSTR=-f2 ;;
             --flag_3) OPTSTR=-f3 ;;
           --optarg_1) OPTSTR=-o1 ;;
           --optarg_2) OPTSTR=-o2 ;;
    esac 
    case "$OPTSTR" in 
           -*) OPTSTR="${OPTSTR#-}"
               while :; do 
                     case "${#OPTSTR}" in 0) break; esac 
                     ARGSTR="${OPTSTR#?}"; OPTSTR="${OPTSTR%${ARGSTR}}"
                     case "$OPTSTR" in 
                                 o1) OPTARG="$(get_arg "$2")" && shift; case "$?" in 1) exit 65; esac 
                                     logger "-o1/--optarg_1 argument  is $OPTARG";;
                                 o2) OPTARG="$(get_arg "$2")" && shift; case "$?" in 1) exit 65; esac
                                     logger "-o2/--optarg_2 argument  is $OPTARG";;
                                 f1) logger "FLAG_1 is set";;  
                                 f2) logger "FLAG_2 is set";;
                                 f3) logger "FLAG_3 is set";;
                                  *) logger "--> unrecognized option -${OPTSTR}" >&2 && exit 65 ;; 
                     esac 
                     case "$OPTSTR" in o1*|o2*) break; esac
                     OPTSTR="$ARGSTR"
               done 
    esac 
    shift 
done


Last edited by Lie Algebra; 03-02-2009 at 01:46 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. AIX

Input parameters

friends and I can validate whether to run the shell has input parameters m event date, I occasionally happen something like this does not work if $ 1 is null then echo has entered input parameters else echo "parameter ok" fi (2 Replies)
Discussion started by: tricampeon81
2 Replies

2. Shell Programming and Scripting

How can I take input parameters after the first one?

Hi, Is there a simple way to take input of parameters after the first one? As following example, if I assign others=$2, it only takes the second one, if I assign others=$@, it will include the first one. I may try to assign others="$2 $3 $4 $5 $6 $7 $8 $9", it looks very ugly and could missing... (1 Reply)
Discussion started by: hce
1 Replies

3. Shell Programming and Scripting

Shell script to run sql query having a long listing of parameters

Hi, I have a query regarding execution of a sql query having long listing of parameters ..I need to execute this query inside a shell script. The scenario is like.... Suppose I have a file abc.txt that has the card numbers..it could be in thousands.. then I need to fire a query like ... (12 Replies)
Discussion started by: vsachan
12 Replies

4. Shell Programming and Scripting

[Solved] I need to parse an username in parameters

Hi! Thank you ina advance for your Help. Sorry my english, Im from Argentina! Great Place!!! So, here si my problem I have a variable, lets say PARAMETERS that could be set like this: PARAMETROS="-Usistemas string1 -Astring2 -G -Y -Kcoco -Y string4 -Z" or PARAMETROS="string1... (1 Reply)
Discussion started by: Hercraft
1 Replies

5. Shell Programming and Scripting

specified path name is too long passing parameters to awk via shell script

Hello, I have this shell script that runs awk code by passing in parameters however now it doesn't work anymore with the parameters and I don't know why. It removes duplicates from an input file based on a part of the last field and a key column. It removes the record with the older datetime... (0 Replies)
Discussion started by: script_op2a
0 Replies

6. Programming

Parse parameters with getopts

Hi, this is my problem I have script with two parameters -n name and -s surname. Both have arguments and I want to know how parse these parameters with getopts. When you write ./names -n John -s White it find you all persons, which name is John White, but when you write ./names -n John ... (1 Reply)
Discussion started by: frees
1 Replies

7. Shell Programming and Scripting

Parse HTML tag parameters and text

Hi! I have a bunch of HTML files, which I want to parse to CSV files. Every page has a table in it, and I need to parse each row into a csv record. With awk and sed, I managed to put every table row in separate lines. So my file looks like this: <TR> .... </TR> <TR> .... </TR> ...One... (1 Reply)
Discussion started by: senszey
1 Replies

8. Shell Programming and Scripting

Verify input parameters

I have to write a script to verify input parameters; say esr should be YES or NO other wise the script should print an error. This is what i tried in my script but I get the following error : esr="YES" if ; then print " Error should specify esr options YES/NO" else esr =$esr fi ... (2 Replies)
Discussion started by: ramky79
2 Replies

9. Shell Programming and Scripting

input parameters pls help!

Hi i am a newbie who is trying to input parameters into this script, but not sure where to start. The parameters that need to be input are the baseline label "abc.0111.BL " mantioned bellow, and database string "abc/abcp@db2 @counter.sql " Environment: Windows XP Running script: Cygwin 3.2 ... (2 Replies)
Discussion started by: yarik20
2 Replies

10. Shell Programming and Scripting

Input parameters

I have a script which take 3 input parameters 1st - a date (i.e. current date) 2nd - type (i.e. A) 3rd - limit (i.e. 40) normally the date parameter would be current date, so I thought I could do this calculate.sh $(date +%Y-%m-%d) A 40 however, it seems like it can't be done,... (3 Replies)
Discussion started by: mpang_
3 Replies
Login or Register to Ask a Question