Fishリストから変数を抽出するには?

Fishリストから変数を抽出するには?

だから最近、Linuxに似たコマンドをたくさん共有するcliをダウンロードしました。 [ OK mega-login]: login& mega-logout: logout cli を使用する必要があるたびに、大容量ファイルの作成に疲れました。エイリアスを使うかと思いましたが、私が知らない別のコマンドを使って他のプログラムを台無しにしたくはありません。エイリアスを生成すると、loginシステムloginコマンドはどうなりますか?また、cliには多くのコマンドがあります。

それで、スクリプトを活用してみるかと思いましたが、どうすればいいのかわかりませんでした。これが私の考えです。したがってm login、orを使用すると、m logoutそのコマンドを検索するか、存在mega-loginするかを検索mega-logoutして呼び出します。

それで、フィッシュを学びながら数時間の間、さまざまな機能を考えてこう書いています。

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

最初の(そして2番目の)試みでは悪くありません。正しく合わせるのは難しいかもしれません。

どうですか?

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

関連情報