Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

how do I get the last argument from a list of arguments?



I’m trying to learn better ways of dealing with arguments given to a
function, because I am sure that I am not doing it the most efficient
way.

For example, if I want to process a series of args, I usually use a
loop like this:

for FOO in "$@"
do
     case "$FOO" in
          -t|--to)
               shift
               TO="$1"
               shift
          ;;

          -v|--verbose)
               VERBOSE='yes'
          shift
          ;;

          -*|--*)
               echo " $NAME [warning]: Don't know what to do with arg: $1"
               shift
          ;;

     esac

done # for args

That has worked OK for what I've needed to do, but now I'm trying to
create two functions which I will use in place of 'cp' and 'mv' and I
need to be able to find the _last_ argument (the destination) before I
process all the rest of the args.

The only way that I can think of to get the last argument is to do
something like this

     LAST=`echo "$@" | awk '{print $NF}'`

but that made me wonder if there wasn’t a better way.

Note that this does not need to be 'portable' at all -- I will happily
use any zsh-specific features which may exist, as long as it works in
5.0.2 (which is what comes with OS X).

Thanks!

TjL



Messages sorted by: Reverse Date, Date, Thread, Author