parameter optstring examples ejemplos bash getopts

optstring - Bash Getopts con opciones mĂșltiples y obligatorias



getopts bash ejemplos (1)

¿Es posible usar getopts para procesar múltiples opciones juntas? Por ejemplo, myscript -iR o myscript -irv.

Además, tengo una situación en la que, según un script de condición, necesitaría una opción obligatoria. Por ejemplo, si el argumento del script es un directorio, necesitaré especificar la opción -R o -r junto con cualquier otra opción (myscript -iR mydir o myscript -ir mydir o myscript -i -r mydir o myscript -i -R mydir), en caso de solo archivo -i es suficiente (myscript -i myfile).

Intenté buscar pero no obtuve ninguna respuesta.


Puede concatenar las opciones que proporcione y getopts separará. En su declaración de case , manejará cada opción individualmente.

Puede establecer una marca cuando se vean las opciones y verificar que las "opciones" (!) getopts estén presentes después de que se haya completado el bucle getopts .

Aquí hay un ejemplo:

#!/bin/bash rflag=false small_r=false big_r=false usage () { echo "How to use"; } options='':ij:rRvh'' while getopts $options option do case $option in i ) i_func;; j ) j_arg=$OPTARG;; r ) rflag=true; small_r=true;; R ) rflag=true; big_r=true;; v ) v_func; other_func;; h ) usage; exit;; /? ) echo "Unknown option: -$OPTARG" >&2; exit 1;; : ) echo "Missing option argument for -$OPTARG" >&2; exit 1;; * ) echo "Unimplemented option: -$OPTARG" >&2; exit 1;; esac done shift $(($OPTIND - 1)) if ! $rflag && [[ -d $1 ]] then echo "-r or -R must be included when a directory is specified" >&2 exit 1 fi

Esto representa una implementación de referencia completa de una función getopts , pero es solo un boceto de un script más grande.