switch - 条件に応じてコマンドブロックを実行¶
概要¶
switch VALUE; [case [GLOB ...]; [COMMANDS ...]; ...] end
説明¶
switch は、指定された値がいくつかのグロブ(ワイルドカード)値のいずれかと一致するかどうかに応じて、複数のコマンドブロックのうちの1つを実行します。どのブロックを実行するかを決定するために、 case が switch 文とともに使用されます。
各 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
上記のコードを $animal を whale に設定して実行した場合、出力は mammal になります。
