Sponsored Content
Full Discussion: getopts alternative?
Top Forums Shell Programming and Scripting getopts alternative? Post 302182212 by era on Sunday 6th of April 2008 01:43:39 AM
Old 04-06-2008
I guess fpmurphy alludes specifically to ksh so you may be lucky there.

Option processing "by hand" is not such a big deal, either.

Code:
while true
do
  case $# in 0) break ;; esac
  case $1 in
    -d|--dir) shift; dir=$1; shift ;;
    -u|--user) shift; user=$1; shift ;;
    -a|--all) shift; all=true ;;
    -|--) shift; break;;
    -h|--help) cat <<______EOF >&2; exit 0 ;;
Syntax: $0 [ -d directory | --dir directory ] [ -u user | --user user ] | --help
______EOF
    -*) cat <<______EOF >&2; exit 2 ;;
Invalid option $1.  Try $0 --help to see available options.
______EOF
    *) break ;;
  esac
done

When it comes to single dash vs double dash for long options, option clustering vs no option clustering, requiring and/or permitting an equals sign between a long option and its value, etc, you're in a twisty maze of conflicting standards, all equally non-standard. Personally I'd recommend double dash for long options. Permitting equals signs between options and their values would complicate the code somewhat, as would option clustering for short options (i.e. allowing -au user as a shorthand for -a -u user).

PS. I just whipped this up on the fly, but $dmr knows I've written enough of these to have some routine. It even seems to work, based on quick informal testing.

Last edited by era; 04-06-2008 at 02:46 AM.. Reason: P.S.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

getopts help

Hi i have part of the scripts below ,getopt for -h or ? not working for me. can anybody tell me if this sytax right or wrong. #!/usr/bin/ksh program=$(basename $0) ##################################################################################### function usageerr { RC=1 ... (3 Replies)
Discussion started by: GrepMe
3 Replies

2. 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

3. 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

4. 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

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. 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

7. 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

8. Shell Programming and Scripting

Getopts alternative

Hi, Does anyone have an example of parsing command line arguments similar to how getopts parse command line arguments? I am looking at a getopts alternative because I want to have the same parsing on the subroutine/function in the script. For example, I want to be able to do test.ksh -p 1... (4 Replies)
Discussion started by: newbie_01
4 Replies

9. 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

10. 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
Getopt::Std(3pm)					 Perl Programmers Reference Guide					  Getopt::Std(3pm)

NAME
getopt - Process single-character switches with switch clustering getopts - Process single-character switches with switch clustering SYNOPSIS
use Getopt::Std; getopt('oDI'); # -o, -D & -I take arg. Sets $opt_* as a side effect. getopt('oDI', \%opts); # -o, -D & -I take arg. Values in %opts getopts('oif:'); # -o & -i are boolean flags, -f takes an argument # Sets $opt_* as a side effect. getopts('oif:', \%opts); # options as above. Values in %opts DESCRIPTION
The getopt() function processes single-character switches with switch clustering. Pass one argument which is a string containing all switches that take an argument. For each switch found, sets $opt_x (where x is the switch name) to the value of the argument if an argu- ment is expected, or 1 otherwise. Switches which take an argument don't care whether there is a space between the switch and the argument. The getopts() function is similar, but you should pass to it the list of all switches to be recognized. If unspecified switches are found on the command-line, the user will be warned that an unknown option was given. Note that, if your code is running under the recommended "use strict 'vars'" pragma, you will need to declare these package variables with "our": our($opt_x, $opt_y); For those of you who don't like additional global variables being created, getopt() and getopts() will also accept a hash reference as an optional second argument. Hash keys will be x (where x is the switch name) with key values the value of the argument or 1 if no argument is specified. To allow programs to process arguments that look like switches, but aren't, both functions will stop processing switches when they see the argument "--". The "--" will be removed from @ARGV. perl v5.8.0 2002-06-01 Getopt::Std(3pm)
All times are GMT -4. The time now is 09:14 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy