Работа с простой функцией справки far bash

Работа с простой функцией справки far bash

Я адаптировал код, который мне нужен, чтобы обрабатывать только один возможный вариант. Либо запустите функцию, либо используйте опцию справки, чтобы дать краткое описание.

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
}

Я хотел бы упростить его еще больше, если это возможно, не вызывая при этом странного поведения пользователя при вызове.

решение1

Это возможно, поскольку вы утверждаете, чтовам нужно толькоодинаргумент, поэтому нет необходимости в цикле или «обёртывании»:

$ 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

Теперь обратите внимание, что я изменил название функции, заменив дефис на подчеркивание: activate_jetвместо activate-jet, потому что дефисможет быть несовместим с некоторыми оболочками:

Выводы

  • Дефисы нестандартны. Избегайте их, если вам нужна совместимость между оболочками.
  • Используйте подчеркивания вместо дефисов: подчеркивания принимаются везде.

Связанный контент