How (if at all) does one use "getopts" with /bin/sh?

From: Mark Bartelt <mark_at_cita.utoronto.ca>
Date: Thu, 19 Feb 1998 07:41:38 -0500

Sorry if I'm missing something really obvious, but ...

In other versions of UNIX (IRIX, Solaris, SunOS) "getopts" is
a shell built-in. However, the Digital UNIX /bin/sh appears
not to have it as a built-in, and /usr/bin/getopts doesn't do
the trick.

Although the manpage doesn't explicitly say so, it seems that
the DUnix "getopts" is intended to be used with ksh (and only
with ksh?), since the example includes ...

        shift $(($OPTIND - 1))

However, if I make the obvious change ...

        shift `expr $OPTIND - 1`

... and try using the example in a /bin/sh script, it doesn't
work (which isn't surprising, if DU's Bourne shell is lacking
the "getopts" built-in, and uses /usr/bin/getopts instead).

So ... Is there a way to use "getopts" from a /bin/sh script,
or do I need to change all the shell scripts which work fine
on all our other systems to use /bin/ksh instead?

Mark Bartelt 416/978-5619
Canadian Institute for mark_at_cita.utoronto.ca
Theoretical Astrophysics http://www.cita.utoronto.ca/~mark

"Nur eine Waffel taugt!" -- Parsifal, in an Eggo commercial
Received on Thu Feb 19 1998 - 13:41:54 NZDT

This archive was generated by hypermail 2.4.0 : Wed Nov 08 2023 - 11:53:37 NZDT