help-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Handling short and long options


From: angioberlinguer
Subject: Handling short and long options
Date: Tue, 07 Sep 2021 02:55:13 +0000

Hi Alex , thanks fuck for that!  It's not a total disaster then.  Have found 
some useful discussions
in the following stackoverflow question.  They handle short-options with spaces 
and long-options with
equal signs.

https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash/29754866#29754866




‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Tuesday, September 7, 2021 2:10 AM, Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com> 
wrote:

> i have for args around the following system
> touch assoc elements aka supported args on it with some features like
> argument count taking, and then running the args thru such a parser
>
> btw its not the gnu guys, .. i guess..
>
> On Tue, Sep 7, 2021, 01:13 angioberlinguer angioberlinguer@protonmail.com
> wrote:
>
> > It is a way to handle short and long options manually. Pelhaps I can
> > simplify the "-s"
> > option. For the "-s" option, I wanted to accept wildcards (e.g. A*) which
> > the shell would
> > expand.
> > Noticed a small mistake in the last part, which should be
> > (*) fls+=( "$2" ) ; shift 1 ;;
> > esac
> > ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> > On Monday, September 6, 2021 11:05 PM, Dennis Williamson <
> > dennistwilliamson@gmail.com> wrote:
> >
> > > On Mon, Sep 6, 2021, 5:40 PM angioberlinguer via help-bash@gnu.org
> > > wrote:
> > >
> > > > I have made the following function to parse short and long options.
> > > > Perhaps I do not need to
> > > > call `set -- $*`.
> > > > The while loop could also be changed. I want to allow splitting on
> > > > space
> > >
> > > > and equal sign
> > > > so I can call it with `-s val` and `--src=val`.
> > > > rando ()
> > > > {
> > > > local incl=() fls=()
> > > > IFSPREV="$IFS" # Save IFS (splits arguments on whitespace by default)
> > > > IFS=" =" # Split arguments on " " and "="
> > > > set -- $* # Set positional parameters to command line arguments
> > > > IFS="$IFSPREV" # Set original IFS
> > > > local iarg=0 narg="$#"
> > > > while (( narg > 0 )); do
> > > > opt="$1"
> > > > iarg=$(( iarg + 1 ))
> > > > case $opt in
> > > > ("--incl") incl+=("$2") ; shift 2 ;;
> > > > ("-s"|"--src"|"--source") src=$( "$2" ) ; shift 2 ;;
> > > > ("-d"|"--dst"|"--destin") dst="$2" ; shift 2 ;;
> > > > ("--") shift 1 ; break ;;
> > > > ("-") printf '%s\n' "Unknown option: $1" ; shift 1 ;;
> > > > () fls+=( "$2" ) ; shift 1 ;;esac
> > > > done
> > >
> > > WTH is going on?





reply via email to

[Prev in Thread] Current Thread [Next in Thread]