Manejo de la opción de ayuda simple de la función bash

Manejo de la opción de ayuda simple de la función bash

He adaptado un código que tenía para manejar solo una opción posible. Ejecute la función o utilice la opción de ayuda para dar una breve descripción.

activate-jet ()
{
 local  iarg=0  narg="$#"
 while (( narg > 0 )); do
   opt="$1" ; iarg=$(( iarg + 1 ))
   case $opt in
     ("-h"|"--help")  echo "TODO" ; return ;;
     (*)  break ;;
   esac
 done
}

Me gustaría simplificarlo más si puedo, sin introducir ningún comportamiento extraño por parte del usuario cuando sea llamado.

Respuesta1

Esta es una posibilidad, ya que usted afirma quesolo necesitasunoargumento, por lo tanto, no hay necesidad de realizar bucles o "casing":

$ activate_jet() { 
    [[ "$#" -gt 1 ]] && echo "Invalid number of arguments" && return
    if [[ ! -z "$1" ]]; then 
      if [[ "$1" = "-h" || "$1" = "--help" ]]; then
        echo "TODO" && return
      else
        echo "Bad argument" && return
      fi
    fi 
    echo "jet activated"
  }
$ activate_jet foo bar
Invalid number of arguments
$ activate_jet foo
Bad argument
$ activate_jet -h
TODO
$ activate_jet --help
TODO
$ activate_jet
jet activated

Ahora note que cambié el nombre de la función reemplazando el guión por un guión bajo: activate_jeten lugar de activate-jet, porque el guiónPuede que no sea compatible con algunas carcasas.:

Conclusiones

  • Los guiones no son estándar. Manténgase alejado de ellos si desea compatibilidad entre shells.
  • Utilice guiones bajos en lugar de guiones: los guiones bajos se aceptan en todas partes.

información relacionada