Bash 创建自定义Fish开关

Bash 创建自定义Fish开关,bash,function,shell,fish,Bash,Function,Shell,Fish,我正在处理一个名为quick()的鱼壳函数,我想向它添加一些开关 例如quick-l列出所有路径标签 似乎没有提供这样的信息 我的问题是, 使用fish中的开关增强函数功能的最佳方法是什么 是否可以使用新开关扩展现有命令 这是否与bash/shell的类似主题有关 我在那里遇到了一些相关的信息,比如“”,但还没有找到一个关于这些问题的明确而具体的答案。如果您有任何帮助,我们将不胜感激 注意:以检查函数别名为例,switch语句中似乎只使用了$argv。您可以使用。很冗长。下面是一个只查找-h

我正在处理一个名为quick()的鱼壳函数,我想向它添加一些开关

例如
quick-l
列出所有路径标签

似乎没有提供这样的信息

我的问题是,

  • 使用fish中的开关增强函数功能的最佳方法是什么
  • 是否可以使用新开关扩展现有命令
  • 这是否与bash/shell的类似主题有关
我在那里遇到了一些相关的信息,比如“”,但还没有找到一个关于这些问题的明确而具体的答案。如果您有任何帮助,我们将不胜感激

注意:以检查函数别名为例,switch语句中似乎只使用了$argv。

您可以使用。很冗长。下面是一个只查找
-h
-help

function foobar
    set -l usage "usage: foobar [-h|--help] subcommand [args...]
                ... more help text ...
"
    if test (count $argv) -eq 0
        echo $usage
        return 2
    end

    # option handling, let's use getopt(1), and assume "new" getopt (-T)
    set -l tmp (getopt -o h --long help -- $argv)
    or begin
        echo $usage
        return 2
    end

    set -l opts
    eval set opts $tmp

    for opt in $opts
        switch $opt
            case -h --help
                echo $usage
                return 0
            case --
                break
            case '-*'
                echo "unknown option: $opt"
                echo $usage
                return 1
        end
    end

    switch $argv[1]
        case subcommand_a
            ... etc

更可能是@AndyRay的一个副本,我遇到了这个问题,我想知道是否有比访问$argv和测试字符串相等性更好的交换机方法。开关的完成方式也有点不同,不是吗?请看: