在没有 argparse 的情况下解析 fish shell 中的参数

Parsing arguments in fish shell without argparse

我正在使用 fish shell 并编写了我自己的小解析器函数,因为我发现 argparse 令人困惑。基本上,如果标志匹配,它会使用来自以下参数的信息。但是,我假设我的方法一定会引入错误,因为我还没有在网上看到过这种方法。我缺少使用 argparse 的优点吗?

function check_args
 
  for current_arg in (seq 1 (count $argv))

    #grab next argument
    set next_arg $argv[(math $current_arg + 1)]

    switch $argv[$current_arg]
    case -h --help
      usage
      break
    case -t --theme
      echo "theme: " $next_arg
      set -g theme themes/$next_arg.css 
    case -f --format
      echo "format: " $next_arg
      set -g format $next_arg
    case -o --output
      echo "output: " $next_arg
      set -g output $next_arg
    end
  end
end

check_args $argv #calls the function with the passed arguments

使用 argparse:

# the -- is required!
argparse h/help t/theme= f/format= o/output= -- $argv
or exit 1

# just to inspect the variables
set -S _flag_h _flag_help _flag_t _flag_theme _flag_f _flag_format _flag_o _flag_output

if set -q _flag_help
    usage
    exit
end

set theme themes/$_flag_theme.css
set format $_flag_format
set output $_flag_output