p d -literal -offset indent set -- \`getopt abo: $*\` if test $? != 0 then echo 'Usage: ...' exit 2 fi for i do case "$i" in -a|-b) flag=$i; shift;; -o) oarg=$2; shift; shift;; --) shift; break;; esac done .Ed
p This code will accept any of the following as equivalent:
p d -literal -offset indent cmd -aoarg file file cmd -a -o arg file file cmd -oarg -a file file cmd -a -oarg -- file file .Ed .Sh SEE ALSO .Xr sh 1 , .Xr getopt 3 .Sh DIAGNOSTICS .Nm Getopt prints an error message on the standard error output when it encounters an option letter not included in .Op optstring . .Sh HISTORY Written by Henry Spencer, working from a Bell Labs manual page. Behavior believed identical to the Bell version. .Sh BUGS Whatever .Xr getopt 3 has.
p Arguments containing white space or embedded shell metacharacters generally will not survive intact; this looks easy to fix but isn't.
p The error message for an invalid option is identified as coming from .Nm getopt rather than from the shell procedure containing the invocation of .Nm getopt ; this again is hard to fix.
p The precise best way to use the .Nm set command to set the arguments without disrupting the value(s) of shell options varies from one shell version to another.