GNU/Linux >> Linux の 問題 >  >> Linux

BashスクリプトでCaseステートメントを操作する方法

この記事では、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文に置き換え始めると、コードはクリーンで保守しやすくなります。


Linux
  1. VimをTmuxで適切に動作させる方法は?

  2. Monoで*.exeを実行するようにBashを設定する方法は?

  3. 大文字と小文字を区別しないパターンをLと一致させる方法は?

  1. 例を使用してBashスクリプトを作成する方法

  2. 例を含む Bash If-Else ステートメント

  3. 5 Bash Case ステートメントの例

  1. Bashcaseステートメントの構文と例

  2. Bashの続行:ループを再開する方法

  3. dnfパッケージグループの操作方法