Dato un esempio minimale come questo
Codice: Seleziona tutto
#!/bin/bash
# valori iniziali
val_A=False
val_B=False
# lettura delle opzioni
# `a' ha argomento obbligatorio (ma non cambia renderlo facoltativo)
# `b' non prevede argomento.
OPZIONI=`getopt -o a:b -- "$@"`
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
eval set -- "$OPZIONI"
# In base alle opzioni, modifica le variabili.
while true ; do
case "$1" in
-a) val_A=$2; shift 2;;
-b) val_B=True; shift ;;
--) shift ; break ;;
*) echo "Internal error!" ; exit 1 ;;
esac
done
echo "val_A = $val_A"
echo "val_B = $val_B"
Codice: Seleziona tutto
$ /tmp/getopt-tmp -a-b
val_A = -b
val_B = False
$ /tmp/getopt-tmp -ab
val_A = b
val_B = False
$ /tmp/getopt-tmp -a -b
val_A = -b
val_B = False
Codice: Seleziona tutto
$ /tmp/getopt-tmp -a -b
val_A =
val_B = True
$ /tmp/getopt-tmp -a-b
val_A = -b
val_B = False
$ /tmp/getopt-tmp -ab
val_A = b
val_B = False
qualcosa di questo tipo?
Codice: Seleziona tutto
...
while true ; do
case "$1" in
-a)
if [[ $2 =~ ^- ]]; then echo "missing argument -- \"a\""; exit 1; fi
...