仕切り直すわ。なんでこの文章で理解できないのかわからないが、
ちゃんと補足する。


シェルスクリプトで引数を取り扱ういい方法はないでしょうか?
getoptとかgetoptsがあるのは知っています。

くり返しいいます。

getoptとかgetoptsがあるのは知っています。


ですが、例えば cp みたいに、cp -a a b とかけるが
cp a -a b や cp a b -a というふうにオプションの順番を入れ替えても動くとか
(もちろんcpは例です。cpみたいなと言ってるわけで、cpのオプションを
扱いたいなんて言っていません)

gitみたいにサブコマンドが使えて、
git --no-pager log --stat のように--no-pagerはgitのオプション、
--statはlogのオプションみたいにする方法がよくわかりません
(もちろんgitは例です。gitみたいなと言ってるわけで、gitのオプションを
扱いたいなんて言っていません)

頑張ればできると思いますが、複雑になりそうです。
(gitのC言語のソースのような複雑なコードは書きたくないです)
なにかいい方法はないでしょうか?

なお他言語を使うとか言うのは禁止です。