switch - 条件に応じてコマンドブロックを実行

概要

switch VALUE; [case [GLOB ...]; [COMMANDS ...]; ...] end

説明

switch は、指定された値がいくつかのグロブ(ワイルドカード)値のいずれかと一致するかどうかに応じて、複数のコマンドブロックのうちの1つを実行します。どのブロックを実行するかを決定するために、 caseswitch 文とともに使用されます。

case コマンドには1つ以上のパラメータが与えられます。 switchコマンドで指定された文字列に一致するパラメータを持つ最初の case コマンドが評価されます。 case のパラメータにはグロブを含めることができます。 ファイル名を使用した通常のグロブ展開を避けるために、これらはエスケープするか引用符で囲む必要があります。

fishのcase文ではフォールスルー(次のcaseへ継続すること)は行われないことに注意してください。 最初に一致したcaseのみが実行されます。

他の言語のように、 break を使用してcase/switchブロックを途中で抜けることはできないことに注意してください。 breakはループ内でのみ使用できます。

case文内のコマンド置換は、その中身が実行されない場合でも評価されることに注意してください。 コマンド置換を含むすべての置換は、値をパラメータと比較する前に実行される必要があります。

変数 $animal に動物の名前が含まれている場合、次のコードはそれを分類しようと試みます:

switch $animal
    case cat
        echo evil
    case wolf dog human moose dolphin whale
        echo mammal
    case duck goose albatross
        echo bird
    case shark trout stingray
        echo fish
    case '*'
        echo I have no idea what a $animal is
end

上記のコードを $animalwhale に設定して実行した場合、出力は mammal になります。