處理 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 不相容:

結論

  • 連字符是非標準的。如果您想要跨外殼相容性,請遠離它們。
  • 使用底線而不是連字符:下劃線在任何地方都被接受。

相關內容