Umgang mit einfachen Hilfeoptionen für Bash-Funktionen

Umgang mit einfachen Hilfeoptionen für Bash-Funktionen

Ich habe den Code angepasst, um nur eine einzige mögliche Option zu verarbeiten. Führen Sie entweder die Funktion aus oder geben Sie über die Hilfeoption eine kurze Beschreibung ein.

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
}

Ich würde es, wenn möglich, gerne weiter vereinfachen, ohne dass es beim Aufruf zu merkwürdigem Verhalten des Benutzers kommt.

Antwort1

Dies ist eine Möglichkeit, da Sie sagen, dassdu brauchst nureinsStreit, daher besteht keine Notwendigkeit für Schleifen oder „Gehäuse“:

$ 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

Beachten Sie, dass ich den Namen der Funktion geändert habe, indem ich den Bindestrich durch einen Unterstrich ersetzt habe: activate_jetanstelle von activate-jet, weil der Bindestrichist möglicherweise nicht mit einigen Shells kompatibel:

Schlussfolgerungen

  • Bindestriche sind kein Standard. Vermeiden Sie sie, wenn Sie Shell-übergreifende Kompatibilität wünschen.
  • Verwenden Sie Unterstriche statt Bindestriche: Unterstriche werden überall akzeptiert.

verwandte Informationen