Debe utilizar la utilidad externa getopt
si desea admitir opciones largas. Si solo necesita admitir opciones cortas, es mejor utilizar el Bash incorporado getopts
.
Aquí es un ejemplo del uso getopts
(getopt
no es demasiado diferente):
options=':q:nd:h'
while getopts $options option
do
case $option in
q ) queue=$OPTARG;;
n ) execute=$FALSE; ret=$DRYRUN;; # do dry run
d ) setdate=$OPTARG; echo "Not yet implemented.";;
h ) error $EXIT $DRYRUN;;
\?) if (((err & ERROPTS) != ERROPTS))
then
error $NOEXIT $ERROPTS "Unknown option."
fi;;
* ) error $NOEXIT $ERROARG "Missing option argument.";;
esac
done
shift $(($OPTIND - 1))
No es que la primera prueba siempre mostrará el resultado true
y creará un archivo llamado "1" en el actual directorio. Debe utilizar (en orden de preferencia):
if (($# > 1))
o
if [[ $# -gt 1 ]]
o
if [ $# -gt 1 ]
Además, para una misión, no se puede tener espacios alrededor del signo igual:
foo=1
@Prospero: enlace roto – realtebo