PowerShell HelpFile - about_Switch
 記事記号:[me1585] 初版:2011/May/10

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

トピック
    about_Switch

簡易説明
    switch を使用して複数の If ステートメントを処理する方法について説明します。

詳細説明
    if ステートメントは、スクリプトまたはプログラムでなんらかの判断を下すために
    使用します。基本的には、"この条件が満たされている場合は、このアクションを実
    行する。それ以外の場合は、別のアクションを実行する" ということを意味します。
    この処理は必要に応じて何回でも実行できますが、条件が多くなると、if ステート
    メントでは対処しきれなくなります。多数の条件を 1 つの switch ステートメント
    にまとめることができます。この場合、他の分岐ステートメントと同様、スクリプト 
    ブロックを中かっこ ({}) で囲む必要があります。

    switch ステートメントは、事実上は一連の if ステートメントです。switch ステー
    トメントは、式と各条件を個別に照合します。一致するものが見つかると、その条件
    に関連付けられたアクションが実行されます。基本的な switch ステートメントは、
    次のような形式になります。

        PS> $a = 3
        PS> switch ($a) {
            1 {"It is one."}
            2 {"It is two."}
            3 {"It is three."}
            4 {"It is four."}
            }
        
        It is three.


    この簡単な例では、1 つの値が与えられ、その値とリスト内の各条件が比較されます。
    条件が一致した文字列のエコーを表示するアクションが実行されます。ただし、すべ
    ての条件をチェックする場合に、問題に直面する可能性があります。次にその例を示
    します。

        PS> $day = "day5"
        PS> switch ($day){
            day1 {"Monday"; break}
            day2 {"Tuesday"; break}
            day3 {"Wednesday"; break}
            day4 {"Thursday"; break}
            day5 {"Friday"; break}
            day6 {"Saturday"; break}
            day7 {"Sunday"; break}
            day5 {"Too many days"; break}
            }
        
        Friday


    このリストには、2 つの day5 条件があります。しかし、各条件の最後にある break 
    によって、switch ステートメントの処理が終了し、条件の一致したアクションが実
    行されます。break ステートメントがない場合は、両方の day5 アクションが実行さ
    れます。

    switch の条件で比較される値が配列である場合は、配列内の各要素が要素 0 (ゼロ) 
    から順に評価されます。少なくとも 1 つの要素が、少なくとも 1 つの条件と一致す
    る必要があります。一致しないと、エラーになります。default 句が複数存在すると、
    エラーになります。

    完全な switch 構文は次のとおりです。

        switch [-regex|-wildcard|-exact][-casesensitive] (パイプライン)

    または

        switch [-regex|-wildcard|-exact][-casesensitive] -file filename

    次の文が続きます。

        { 
            "string"|number|variable|{ expression } { statementlist } 
            default { statementlist }
        }

    
    パラメーターが使用されていない場合、switch は、既定で、大文字と小文字を区別
    しない正確な照合が実施される case と同様に機能します。"パイプライン" の結果
    が配列になる場合は、その配列の各要素がオフセットの昇順 (ゼロから始まります) 
    に評価されます。

    switch コード ブロックには、少なくとも 1 つの条件要素を含める必要があり、def
    ault 句は 1 つしか含めることができません。default 句が複数存在する場合は、Pa
    rseException がスローされます。

    switch には次のパラメーターがあります。

        Regex	        比較対象の句が文字列の場合に正規表現文字列として扱われる
                        ことを意味します。このパラメーターを使用すると、Wildcard 
                        と Exact は無効になります。比較対象の句が文字列ではない
                        場合、このパラメーターは無視されます。

        Wildcard	比較対象の句が文字列の場合にワイルドカード文字列として扱
                        われることを意味します。このパラメーターを使用すると、Re
                        gex と Exact は無効になります。比較対象の句が文字列では
                        ない場合、このパラメーターは無視されます。

        Exact	        比較対象の句が文字列の場合は、完全に一致する必要があるこ
                        とを意味します。このパラメーターを使用すると、Wildcard 
                        と Regex は無効になります。比較対象の句が文字列ではない
                        場合、このパラメーターは無視されます。

        CaseSensitive	比較対象の句が文字列の場合は、大文字と小文字を区別するよ
                        うに変更します。比較対象の句が文字列ではない場合、このパ
                        ラメーターは無視されます。

        File	        ステートメントではなく、ファイル (またはユーザー) から入
                        力を受け取ります。複数の File パラメーターを指定すると、
                        最後の 1 つが使用されます。ファイルが 1 行ずつ読み込まれ、
                        switch ブロックをとおして渡されます。

    Regex、Wildcard、または Exact を複数指定することができます。ただし、動作を制
    御するのは最後のパラメーターだけです。

    キーワードの Break は、これ以上処理が行われず、Switch ステートメントが終了す
    ることを意味します。

    キーワードの Continue は、現在のトークンに対する処理が終了し、条件内の次のト
    ークンが評価されることを意味します。有効なトークンがないと、Switch ステート
    メントは終了します。

    "{ expression }" ブロックは、比較時に評価されるコード ブロックを指定できます。
    現在のオブジェクトが自動変数の $_ にバインドされ、式の評価中に使用できます。
    比較は、式が "True" として評価された場合に一致と見なされます。この式は、新し
    いスコープで評価されます。

    switch ステートメント内の "Default" キーワードは、一致するものが見つからなか
    った場合に、キーワードに続くコード ブロックが評価されることを意味します。複合
    リスト内の終わり中かっこ "}" は明示的な "break" であるので、ブロック間のプロ
    グラム フローは許可されません。

    一致するものが複数見つかった場合は、一致ごとに式が実行されます。これを回避す
    るには、Break キーワードまたは Continue キーワードを使用して、それ以降の比較
    を中断します。


関連項目
    about_Break
    about_Continue
    about_If
    about_Script_Blocks
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、HelpFile、about_Switch
ご利用数: 1918606
感想・要望・問い合わせは こちら