追記(2008/04/05)

getopt(1)(バイナリコマンド)、getopts(1)(bash組み込み)っていうのがあった。恥ずかしながら知らなかった。やっぱり欲しい機能は誰でも同じみたいだ。アプローチは似ているが、getopt系だとその後、スクリプト側で更に後処理(シェル変数への格納など)が必要になって来る見たいだが、この辺は趣味の問題か。多分、getoptコマンドもgetoptsコマンドもC言語の引数処理関数getopt(3)の影響を強く受けているように思われる。Cで引数を処理する汎用関数を作るとなるとgetoptのようになると思う。しかし、シェルスクリプト内で使うことを前提としたシェルスクリプトで組むのであれば、shargsのような実装もあっても良いのでは?と思う。
もし、私が先にgetopt(3)を知っていたら固定観念からgetoptsのような実装になったかも知れない。(もっとも、getoptsを知っていたらshargsは作らなかったかも知れない。もしくは、プリプロセッサ的に使ったか。)