如何从 Fish 列表中提取变量?

如何从 Fish 列表中提取变量?

所以,我最近下载了一个cli,它共享了很多类似于linux的命令。就像mega-login: login& mega-logout:logout 我厌倦了每次需要使用 cli 时都编写大型文件。我想过使用别名,但我不想搞砸使用我不知道的其他命令的其他程序。就像如果我创建一个别名login那么系统login命令会发生什么?另外,cli 中有很多命令。

于是,我想到了用脚本,但不知道怎么做。这是我的想法。因此,当我使用m loginor时m logout,它会搜索命令mega-login或是否mega-logout存在,然后调用它。

所以我在学习 Fish 的同时尝试了几个小时想出各种函数,这就是我写的。

function m --argument value $argv
    echo value $value $argv
    if type mega-$value
        set MEGA
        for temp in $argv
            set MEGA $MEGA$temp
            echo $MEGA
        end
        echo MEGA \n\n $MEGA
        eval $MEGA
    end
end

这还是不行。 PS:这是我第一次尝试写的,但一旦我无法弄清楚,我就放弃了。

function m --argument value $argv
    echo value $value $argv
    if type mega-$value
        set MEGA mega-$argv
        echo $argv \n\n\n $MEGA
    eval $MEGA
    end
end

答案1

第一次(和第二次)尝试还不错。要做到恰到好处可能很棘手。

怎么样:

function m
    set -l mega_cmd "mega-$argv[1]"
    set -l mega_args $argv[2..]
    if type -q "$mega_cmd"
        echo "Executing $mega_cmd $mega_args"
        "$mega_cmd" $mega_args
    end
end

当然,这是为了可读性(我更喜欢),但它可以简化为:

function m
    if type -q "mega-$argv[1]"
        echo "Executing mega-$argv[1] $argv[2..]"
        "mega-$argv[1]" $argv[2..]
    end
end

相关内容