help-bash
[Top][All Lists]
Advanced

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

Re: Handling short and long options


From: Alex fxmbsw7 Ratchev
Subject: Re: Handling short and long options
Date: Tue, 7 Sep 2021 04:10:23 +0200

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]