<> == 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" }}} and can be put into a helpful function: {{{ # Bourne getarg() { # $1 is argno shift "$1" && echo "$1" } arg12="`getarg 12 "$@"`" }}} 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 ---- CategoryShell