Differences between revisions 7 and 8
Revision 7 as of 2008-11-16 13:36:53
Size: 1909
Editor: pgas
Comment:
Revision 8 as of 2008-11-16 17:40:12
Size: 308
Editor: 193
Comment: Hi all. It was great to see you and your new wheels at Thruxton on Sunday recipe Interesting posts, besides those spam... http://prepare76held-be.tripod.com/recipec2a.html theives oil recipe chief, ht
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[Anchor(faq25)]]
== How can I access positional parameters after $9? ==
Use {{{${10} }}}instead of {{{$10}}}. This works for ["BASH"] and KornShell, but not for older BourneShell implementations. Another way to access arbitrary positional parameters after $9 is to use {{{for}}}, e.g. to get the last parameter:

{{{
    # Bourne
    for last
    do
        : # nothing
    done

    echo "last argument is: $last"
}}}

To get an argument by number, we can use a counter:

{{{
    # Bourne
    n=12 # This is the number of the argument we are interested in
    i=1
    for arg
    do
        if test $i -eq $n
        then
            argn=$arg
            break
        fi
        i=`expr $i + 1`
    done
    echo "argument number $n is: $argn"
}}}

This has the advantage of not "consuming" the arguments. If this is no problem, the {{{shift}}} command discards the first positional arguments:

{{{
    shift 11
    echo "the 12th argument is: $1"
}}}

In addition, bash and ksh93 treat the set of positional parameters as an [:BashFAQ/005:array], and you may use [:BashFAQ/073:parameter expansion] syntax to address those elements in a variety of ways:

{{{
    # Bash, ksh93
    for x in "${@:(-2)}" # iterate over the last 2 parameters
    for y in "${@:2}" # iterate over all parameters starting at $2
                            # which may be useful if we don't want to shift
}}}

Although direct access to any positional argument is possible this way, it's seldom needed. The common alternative is to use {{{getopts}}} to process options (e.g. "-l", or "-o filename"), and then use either {{{for}}} or {{{while}}} to process all the remaining arguments in turn. An explanation of how to process command line arguments is available in [:BashFAQ/035:FAQ #35], and another is found at http://www.shelldorado.com/goodcoding/cmdargs.html
Hi all. It was great to see you and your new wheels at Thruxton on Sunday recipe Interesting posts, besides those spam... http://prepare76held-be.tripod.com/recipec2a.html theives oil recipe chief, http://usuarios.lycos.es/corolla35/recipec45.html trefethen trefethen wine, see you
----
CategoryCategory

Hi all. It was great to see you and your new wheels at Thruxton on Sunday recipe Interesting posts, besides those spam... http://prepare76held-be.tripod.com/recipec2a.html theives oil recipe chief, http://usuarios.lycos.es/corolla35/recipec45.html trefethen trefethen wine, see you


CategoryCategory

BashFAQ/025 (last edited 2014-04-24 10:02:07 by pgas)