处理 bash 函数的简单帮助选项

处理 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,因为连字符可能与某些 shell 不兼容

结论

  • 连字符是非标准的。如果您想要跨外壳兼容性,请远离它们。
  • 使用下划线而不是连字符:下划线在任何地方都被接受。

相关内容