Parámetros en bash

Estoy haciendo un pequeño script en bash en el que se le pasa algun parámetro del estilo:

./script -opcion1 40
./script -opcion2 -u

Para coger esos valores lo hago mediante case de una forma que no sé si es un poco cutre:
case $1 in
     -opcion1)
        echo "Elegido la opcion -opcion1"

     ;;
     -opcion2)
        echo "Elegido la opcion -opcion2"

   case $2 in
     -u)
       echo "Elegida -u"

     ;;
   esac
    
     ;;
  esac


Sin embargo me gustaría que en vez de un sólo parámetro del estilo -opcion pudiera pasarle muchos EN EL ORDEN QUE QUIERA EL USUARIO.

Por ejemplo, siempre puedo decir que pase 5 parámetros con el orden -opcion1 valor -opcion2 valor -opcion3 valor etc.....

Pero si yo quiero pasarle los que quiera, opcionales, y en el orden que quiera, como lo hago, mediante case?

Algo al estilo del paso por parámetros del mencoder. Espero haberme explicado.

Gracias!
Con algo tipo:

for PARAM in "$@";
  do echo "parametro $PARAM"
     if [ "$PARAM" == "bla" ]; then
       echo "  >>>> parametro BLA detectado"
     fi
done
Lo normal es usar getopt o un bucle tipo:

while [ -n $1 ] ; do
case $1 in
  ...
esac
shift
done


De modo que te hace muy fácil que las opciones puedan tener parámetros (ya sean opcionales o no).

- ferdy
3 respuestas