この記事では、bashのケースステートメントを見ていきます。 そしてそれらをbashスクリプトで使用する方法。 caseステートメント はbashで構築され、bashスクリプトの条件付きロジックを単純化するために使用されます。
[あなたも好きかもしれません:LinuxBashShellでDeclareコマンドを使用する方法]
簡単に言えば、コードに複数の条件付き[ if - elif - else ]
がある場合 ステートメント条件ステートメントをcaseステートメントに置き換えることができます。 caseステートメントの概念は、C、Perl、Java、Javascriptなどの他のプログラミング言語でも使用できます。一部の言語では、switch caseステートメントになり、一部の言語では、caseステートメントになります。使用する言語に合わせて。
Caseステートメントの構文を理解する
スクリプトでcaseステートメントを使用する前に、その構文を理解する必要があります。
パターンのcase expression in pattern1) STATEMENTS ;; pattern2 | pattern3) STATEMENTS ;; pattern-N) STATEMENTS ;; *) STATEMENTS ;; esac
上記のケースステートメントの説明。
- caseステートメントはcaseキーワードで始まり、 esacで終わる必要があります キーワード。
- caseステートメントは式を評価し、式がいずれかのパターンに一致するかどうかを確認します。式はcaseキーワードの後に来る必要があります。
- パターンが評価され、式と一致する場合はステートメントが実行されます。パターンとステートメントは句と呼ばれます。句を終了するには、ダブルセミコロン
";;"
を使用します 。 - パターンが一致する場合、残りのパターンはスキップされます。
- 必要な数のパターンを作成できます。
- アスタリスク記号
(*)
デフォルトのパターンとして使用されます。式がどのパターンとも一致しない場合は、デフォルトのパターンが使用されます。
スクリプトでの簡単なCaseステートメントの作成
年に基づいてチャンピオンズリーグで優勝したチームを表示する簡単なケースステートメントを作成しています。ユーザーは入力として年を渡す必要があります。
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016) echo " Winner is Real Madrid";; 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; *) echo " No data available for the given option";; esac
上記のコードと出力を見てください。ユーザーは入力として年を渡し、変数 WINNERに格納されます 。年は、caseステートメント内のパターンとして指定されたすべての年に対して評価されます。ユーザーが経過した年がどのパターンとも一致しない場合デフォルトのパターン(*)
使用されます。
1つの句で複数のパターンを評価することもできます。 "|"
を使用する必要があります 句で1つ以上のパターンを使用するための記号。前の例と同じコードを使用します。 2016年と2017年を見ると、同じチームが優勝しました。 2016年と2017年に別々の条項を作成する代わりに、単一の条項を作成できます。
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016 | 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; *) echo " No data available for the given option";; esac
これで、ユーザーが2016年または2017年を入力として渡すと、最初の句で評価されます。
caseステートメントでパターンマッチングを使用することもできます。同じコードを再度変更し、文字列やその他の年を評価するためにさらに2つの句を追加しています。
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016 | 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; [a..z]* | [A..Z]*) echo " Year should be passed as argument. Input is wrong";; [0-9][0-9][0-9][0-9]) echo "No data for the passed year..." esac
~/.bashrc
をご覧になることをお勧めします /etc/init.d/の下のファイルとファイル ここで、caseステートメントが使用されます。これらのファイルを調べると、リアルタイムでどのように使用されているかがわかります。
この記事は以上です。 caseステートメント シェルスクリプトを使用するときに知っておくべき重要な概念です。条件文をcase文に置き換え始めると、コードはクリーンで保守しやすくなります。