The list of option specifications is terminated with a single minus (-); the arguments to be parsed follow this. When the argument parsing has finished the environment variable $* is set to the remaining list of arguments.
#!/dis/sh
load arg
bflag := cflag := 0
file  := ()
args  := $*
(arg 
    bc  {$opt^flag = 1}
    f+  {file=$arg}
    r++++ {rect=$arg}
    '*' {echo unknown option $opt}
    - $args
)
echo $0 $bflag $cflag $file
echo rect $rect
echo arguments are $*
When invoked as follows:
the output is:
./script 1 1 file rect 0 10 50 100 arguments are a b c
and when invoked by:
the output is:
unknown option z ./script 1 0 file arguments are -bc
| SH-ARG(1 ) | Rev: Thu Feb 15 14:42:47 GMT 2007 |