Спробуйте shFlags - розширена бібліотека прапорів командного рядка для скриптів оболонки Unix.
http://code.google.com/p/shflags/
Це дуже добре і дуже гнучко.
ТИПИ ПРАПОРІВ: Це перелік ВИЗНАЧЕНИХ _ *, які ви можете зробити. Усі прапори беруть ім'я, значення за замовчуванням, рядок довідки та необов'язкове "коротке" ім'я (однобуквене ім'я). Деякі прапори мають інші аргументи, які описуються разом із прапором.
DEFINE_string: приймає будь-який вхід і інтерпретує його як рядок.
DEFINE_boolean: зазвичай не приймає жодного аргументу: скажімо --myflag, щоб встановити FLAGS_myflag на true, або --nomyflag, щоб FLAGS_myflag встановити на false. Крім того, ви можете сказати --myflag = true або --myflag = t або --myflag = 0 або --myflag = false або --myflag = f або --myflag = 1 Передача опції має той самий ефект, що і передача варіант один раз.
DEFINE_float: бере вхідні дані та інтерпретує їх як число з плаваючою комою. Оскільки оболонка не підтримує поплавці як такі, введення просто перевіряється як дійсне значення з плаваючою комою.
DEFINE_integer: бере вхід і інтерпретує його як ціле число.
СПЕЦІАЛЬНІ ПРАПОРИ: Є кілька прапорів, які мають особливе значення: --help (або -?) Друкує список усіх прапорів, зручним для читання --flagfile = foo читати прапори з foo. (ще не реалізовано) - як і в getopt (), завершує обробку прапора
ПРИКЛАД ВИКОРИСТАННЯ:
-- begin hello.sh --
! /bin/sh
. ./shflags
DEFINE_string name 'world' "somebody's name" n
FLAGS "$@" || exit $?
eval set -- "${FLAGS_ARGV}"
echo "Hello, ${FLAGS_name}."
-- end hello.sh --
$ ./hello.sh -n Kate
Hello, Kate.
Примітка: Я взяв цей текст із документації shflags