case - 条件に応じてコマンドブロックを実行する¶
概要¶
switch VALUE
[case [GLOB ...]
[COMMAND ...]]
end
説明¶
switch は、指定された値がいずれかの値と一致するかに基づいて、複数のコマンドブロックのうちの 1 つを実行します。case は、どのブロックを実行すべきかを決定するために switch 文とともに使用されます。
各 case コマンドには 1 つ以上のパラメータが与えられます。 switch コマンドで指定された文字列に一致するパラメータを持つ最初の case コマンドが評価されます。case のパラメータにはワイルドカードを含めることができます。これらがファイル名を用いた通常のワイルドカード展開をされないようにするために、エスケープするか引用符で囲む必要があります。
fish の case 文では「フォールスルー(一致した後のブロックを続けて実行すること)」は行われないことに注意してください。最初に一致した case のみが実行されます。
case 文内のコマンド置換は、その本体(body)が実行されない場合でも評価されることに注意してください。値をパラメータと比較するためには、コマンド置換を含むすべての置換を事前に実行しておく必要があるためです。
例¶
$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
# Note that the next case has a wildcard which is quoted
case '*'
echo I have no idea what a $animal is
end
上記のコードを $animal に whale をセットして実行すると、出力は mammal になります。
$animal に "banana" をセットした場合、 "I have no idea what a banana is" と表示されます。
