Bryce> It moves the second parameter passed to the Bryce> first's variable if there was a match. I don't Bryce> want to be tied down to a certain set/order of Bryce> the parameters. I'm simply trying to Bryce> move/rename $2 to $1 which is very difficult Bryce> because a variable name can't be number. Hope Bryce> that helps. Is there a reason you're tied to the positional parameters? How about just reassigning them to ordinary variables names? I'm guessing perhaps you are trying to deal with parsing options? If so, how about using getopts, which is designed exactly for this purpose? Some sample code taken from a working program (written in ksh, not bash, but is should run pretty much the same): # parse options while getopts c:fhl:p:s:t: opt do case $opt in c) CACHEDIR=$OPTARG [[ -d $CACHEDIR ]] || { print -u2 "No cache directory: $CACHEDIR" exit 1; } ;; f) fflag=1 ;; h) helpmsg $(basename $0) exit 0 ;; l) SYSLOGIN=$OPTARG ;; p) PROG=$OPTARG ;; s) SYS=$OPTARG ;; t) TMPDIR=$OPTARG [[ -d $TMPDIR ]] || { print -u2 "No temporary directory: $TMPDIR" exit 1; } ;; *) # fallthrough for bad option print -u2 "$USAGE" exit 1 ;; esac done # shift out options and arguments shift $((OPTIND - 1)) -- Lynn David Newton Phoenix, AZ