switch = 選択肢を選んで実行する(Gawk専用) - AWK
○Gawk on Windows △(注記あり)Gawk ×mawk32 ×Mawk ×awk
条件に合う選択肢が見つかったら実行します。一致しなかった時の実行文も書く事が出来ます。**** 書式
--------
switch ( 比較したい値 ) {
case 選択肢:
[ 実行する文 ]
[ case 選択肢: ]
[ 実行する文 ]
[ default: ]
[ 実行する文 ]
}
--------
o この制御文は、Gawkの拡張機能です。
o 比較したい値 -- 整数や文字列です。
o 選択肢 -- 整数や文字列、もしくは正規表現です。 case 1: のように書きます。
+ 1つは必要です。「 case 選択肢: 」の形で、複数書く事も出来ます。
o 実行する文 -- 複数書く事が出来ます。書かない事も出来ます。
+ この制御文の途中で終了したい時は、breakを使います。
o default: -- 他のどの選択肢にも一致しない時に、実行させる事が出来ます。書かない事も出来ます。
**** 使用例
--------
BEGIN {
v = "ミクさん";
switch (v) {
case /ミク/:
case 39:
print "ネギはお好きですか。";
break;
case "ルカ":
print "ルカ様に何か御用ですか。";
break;
default:
print "アイスクリームは品切れです。";
}
}
--------
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
o 書き方はお好みで。AWKは、1行で書く事も出来る言語です。
**** 機能
o switchの丸括弧内で指定した「比較したい値」について、「選択肢」を順に評価します。
+ 基本的に、上から順に評価するみたいです。(= 違うかもしれません)
+ 例外は、default句。この句の評価は、何処に書いても最後になります。
o 「選択肢」は、数値や文字列の他に、正規表現を指定する事も出来ます。
+ 同じ値を持つ選択肢を複数指定すると、文法エラーになりました。
o default句を書くと、他のどの選択肢にも一致しない時に、実行させる事が出来ます。
o 「比較したい値」が選択肢と一致すると、その選択肢の後ろに続く文から実行します。
+ 「実行する文」の実行は、「break」文が出てくるまで続きます。
+ 「break」文を使うと、この制御文を途中終了して、次の文に進む事が出来ます。
o この機能をサポートしていない処理系があります。
** 処理系に依存する機能
o この機能をサポートしている処理系は、次の通りです。
+ Gawk on Windows 3.1.7
+ Gawk for Windows 3.1.6
o default句に break を入れると、文法エラーになる処理系があります。
+ Gawk for Windows 3.1.6
**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6 -- default句で break不可
o mawk MBCS (32bit版) 1.3.3 -- 非対応
o Mawk for Windows 1.3.3 -- 非対応
o original = the one true awk(updated May 1, 2007) -- 非対応
==
関連ページ:
▼AWKのパターンと制御文(▼ABC順)
▼AWKプログラムを書く(▼ABC順)
▼AWK
▼制作メモ
> case = switch文の中で、選択肢を指定する
default = switch文の中で、全ての選択肢と一致しない時に実行する(Gawk専用)
while = 条件付きで繰り返す
+
if = 条件に一致したら実行する
?: = 条件演算子