evaluating ${10} and above in sh/ksh

Maarten Litmaath maart at cs.vu.nl
Tue Aug 14 06:00:46 AEST 1990


In article <514 at risky.Convergent.COM>,
	chrisb at risky.Convergent.COM (Chris Bertin) writes:
)There doesn't seem to be a way, in sh or ksh, to evaluate $10 and higher.
)$10 and higher are evaluated as ${1}0, ${1}1, etc...
)		     instead of ${10}, ${11}, etc...

Alas...  POSIX fixes this though: ${10} will work.

)I have tried many different ways and they all fail. Do you know one
)that will work?

	set a b c d e f g h i j k l m

	argv()
	{
		shift $1 2> /dev/null
		echo "$1"
	}

	echo `argv 10 "$@"`
	echo `argv 11 "$@"`
	echo `argv 20 "$@"`

Beware of "$@": many shells will expand it to a single null string if
there are no positional parameters present at all!  A safe workaround
is:
	${1+"$@"}

Check it out in the manual!
--
   "UNIX was never designed to keep people from doing stupid things, because
    that policy would also keep them from doing clever things."  (Doug Gwyn)



More information about the Comp.unix.wizards mailing list