Estoy escribiendo un script bash, que se basa en una serie de valores proporcionados a través de parámetros y ofrece indicadores (booleanos) opcionales.
Basándome en el ejemplo de esta página , he extendido el script, con la opción -h , a lo siguiente:
human=false while getopts u:a:f:h: flag do case "${flag}" in u) username=${OPTARG};; a) age=${OPTARG};; f) fullname=${OPTARG};; h) human=true;; esac done if $human; then echo "Hello human" else echo "You're not human" fi echo "Username: $username"; echo "Age: $age"; echo "Full Name: $fullname"; El problema con esto es que el parámetro -h requiere un valor, mientras que debería manejarse como un indicador:
bash test.sh -u asdf -h test.sh: option requires an argument -- h You're not human Username: asdf Age: Full Name:¿Cómo puedo usar ambos parámetros con valores y banderas en un script bash?
Debe reemplazar getopts u:a:f:h: con getopts u:a:f:h .
Eliminando el : le dices a getopts que h no tiene ningún argumento adicional.