A dificuldade em analisar a opção de caractere único é que eles podem ser empacotados (por exemplo, -ab
é equivalente a -a -b
). As opções longas do estilo GNU têm a dificuldade que os argumentos podem ser unidos ou não. Com opções de vários caracteres de traço único, não há qualquer dificuldade de análise para que você possa facilmente fazer isso manualmente.
A maioria dos programas com opções de vários caracteres de traço único recebe argumentos em um argumento de linha de comando separado.
foo=
bar=default
require_argument () {
if [ $# -eq 2 ]; then
echo >&2 "$0: Option $1 requires an argument"
exit 2
fi
eval "$1=\"\\""
}
while case "$1" in
--) shift; false;;
-foo) foo=1
-bar) require_argument bar "$@"; shift;;
-?*) echo >&2 "$0: Unknown option $1"; exit 2;;
*) false;;
esac
do
shift
done
Considere a possibilidade de usar opções longas no estilo GNU. Eles têm um comportamento mais padronizado e mais pessoas estão familiarizadas com eles.