このトピックでは、case ステートメントの基本と、Bash スクリプトでの case ステートメントの使用方法について説明します。
Bash case ステートメントは、多くの ELIF 要素を含む IF-THEN-ELSE の最も単純な形式です。 case ステートメントを使用すると、bash スクリプトがより読みやすくなり、保守が容易になります。これらは通常、複数の異なる選択肢がある複雑な条件を単純化するために適用されます。
Bash case ステートメントは、JavaScript または C switch ステートメントと同様のロジックに従います。以下のような若干の違いがあります。
- Bash case ステートメントは、値を 1 回受け取り、その値を複数回テストします。パターンを見つけて、それにリンクされたステートメントを実行すると、パターンの検索を停止します。これは、C の switch ステートメントの場合はほぼ逆です。
Case ステートメントの構文
bash case ステートメントの構文は次のとおりです。
case expression in pattern_1) statements ;; pattern_2) statements ;; pattern_3|pattern_4|pattern_5) statements ;; pattern-n) statements ;; *) statements ;; esac
bash case ステートメントにはいくつかの重要なポイントがあります。
- bash の各 case ステートメントは、「case」キーワードで始まり、その後に case 式と「in」キーワードが続きます。 case ステートメントは「esac」キーワードで閉じられます。
- | で区切って複数のパターンを適用できます。オペレーター。 ) 演算子は、パターン リストの終了を示します。
- ステートメントを含むパターンは句と呼ばれ、2 つのセミコロン (;;) で終了する必要があります。
- アスタリスク記号 (*) は、デフォルトのケースを定義するための最終パターンとして使用されます。最後のケースとして使用される場合、デフォルトのケースとして使用されます。
使い方
まず、case ステートメントは式を展開し、含まれている各パターンとの照合を試みます。一致するものが見つかると、リンクされたすべてのステートメントが 2 つのセミコロン (;;) まで実行されます。最初の一致の後、case は最後に実行されたステートメントの終了ステータスで終了します。
一致するパターンがない場合、ケースの終了ステータスは 0 になります。それ以外の場合、戻りステータスは、実行されたステートメントの終了ステータスです。
デフォルトのアスタリスク パターンが使用されている場合は、一致するパターンがない場合に実行されます。
いくつかの例を使用して、このメカニズムを理解してみましょう。
例1
この例では、case ステートメントの使用法を示す簡単なシナリオを定義しました。
Bash スクリプト
#!/bin/bash echo 'Do you know Java Programming?' read -p 'Yes/No? :' Answer case $Answer in Yes|yes|y|Y) echo 'That's amazing.' echo ;; No|no|N|n) echo 'It's easy. Let's start learning from javatpoint.' ;; esac
出力
例 2
この例では、以前に一致したケースが見つからなかった場合のデフォルトのケースも存在する組み合わせシナリオを定義しました。
セントス vs レル
Bash スクリプト
#!/bin/bash echo 'Which Operating System are you using?' echo 'Windows, Android, Chrome, Linux, Others?' read -p 'Type your OS Name:' OS case $OS in Windows|windows) echo 'That's common. You should try something new.' echo ;; Android|android) echo 'This is my favorite. It has lots of applications.' echo ;; Chrome|chrome) echo 'Cool!!! It's for pro users. Amazing Choice.' echo ;; Linux|linux) echo 'You might be serious about security!!' echo ;; *) echo 'Sounds interesting. I will try that.' echo ;; esac
出力
3 つの異なる入力を使用してスクリプトを実行しました。以下の出力を確認してください。