- 書式
- switch VALUE; [case [WILDCARD...]; [COMMANDS...]; ...] end
概要
switch
コマンドは
複数の COMMANDS
の1つを、
VALUE
が WILDCARD にマッチするかどうか
判断して実行します。
case
コマンドは、どのブロックが
実行されるのかを決定するために
switch
とともに使われます。
各 case
コマンドは
1つ以上のパラメータが与えられます。
VALUE
にマッチするパラメータが与えられた
最初の case
コマンドに対応する COMMANDS
が
評価されます。
case
のパラメータには
ワイルドカードを含められます。
ワイルドカードは
ファイル名に使われる
通常のワイルドカード展開を防ぐために、
エスケープされるか
クオートされる必要があります。(例参照)
注意
実行例
変数 $animal
に
動物名が設定されているとき、
以下のコードは分類しようとします。
case
には複数のパラメータを
置くことができます。
function classify_animal echo $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 end # 上記の関数を定義した状態で実行すると… $ set animal whale; classify_animal whale mammal $ set animal cat; classify_animal cat evil $ set animal goose; classify_animal goose bird $ set animal stingray; classify_animal stingray fish $ set animal ant; classify_animal ant I have no idea what a ant is
fall throughとは、
C系のプログラミング言語において
break
で明示的に switch
から
抜けることを指示しないと、
次の case
も実行してしまうことです。
また、fishの switch
は
最初にマッチしたもののみを
実行します。
以下の例では
どの case
も満たしますが
最初にマッチした1、3を表示します。
set foo nyanya switch $foo case nyanya echo 1 # case 'n*' echo 2 end switch $foo case 'n*' echo 3 # case nyanya echo 4 end
以下は case
内の
コマンド置換+ 変数展開 の例です。
(echo fi)
は fi
になり、
$sh
は sh
になり、
その結果、置換後の case
のパラメータは
fish
になります。
実行すると
okと表示されます。
set shell fish set sh sh switch $shell case (echo fi)$sh echo ok end
最後までお読みいただき、ありがとうございました。参考になれば嬉しいです。