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

Bashスクリプトで条件ステートメントを使用する方法

bashスクリプトでは、条件ステートメントは特定の条件が真か偽かをチェックするのに役立ちます。条件がtrueの場合、シェルスクリプトは、スクリプトで規定されているコードのブロックを実行または実行します。それ以外の場合、スクリプトはコードの実行をスキップし、次の条件ステートメントにジャンプします。

bashスクリプトでは、条件ステートメントに ifが含まれます 、 if-else if-elif-elseおよびネストされている場合 ステートメント。このガイドでは、これらの条件文がスクリプトの実行でどのように使用されるかを探ります。

ifステートメント

最も単純な形式では、「if」ステートメントは次の構文を取ります。

if [[ conditional_statement ]]

then

 command 

fi

条件付きifステートメントはifで始まります キーワード。その後、条件ステートメントが続き、その後に次にが続きます。 条件文が当てはまる場合に実行されるコマンドの前にあるキーワード。

したがって、 condition_statement trueの場合、コマンド 実行されます。 Falseと評価された場合、何も起こらず、コマンド は完全に無視され、スクリプトは終了します。

提供されたスコアが80より大きいかどうかをチェックするbashスクリプトの例を見てみましょう。

$ vim check_score.sh

スクリプトをコピーして貼り付けます。

#!/bin/bash

echo -n "Please Enter a score: "

read score

if [[ $score -gt 80 ]]

then

 echo "You have passed the exam!"

fi

インデントに注意してください。 chmodを使用して実行権限を割り当てます 次のようにコマンドを実行します:

$ chmod +x check_score.sh

次に、スクリプトを実行します。

$ ./check_score.sh

80より大きい値を入力すると、条件ステートメントが真になり、エコーメッセージがstdoutに出力されます

ただし、スコアに提供された値が80未満の場合、条件ステートメントはfalseと評価され、何も起こりません。スクリプトは単に終了します。

if-elseステートメント

前のシェルスクリプトでは、条件ステートメントがTrueと評価された後、1つのコマンドのみが実行されました。条件がFalseと評価された場合、何も出力されず、スクリプトは終了しました。 if-else ステートメントは、条件がfalseと評価された場合にコマンドを実行するのに役立ちます。 その他 条件がFalseを返した場合は、ステートメントの後にコマンドまたはステートメントが続きます。

if [[ conditional_statement ]]

then

 command 

else

 command

fi

前のシェルスクリプトを変更して、その他を追加しましょう ステートメント

#!/bin/bash

echo -n "Please Enter a score: "

read score

if [[ $score -gt 80 ]]

then

 echo "You have passed the exam!"

else

 echo "You have failed the exam, please try again"

fi

ここで、シェルスクリプトは、 elseの後にコードのブロックを実行します 最初の条件がfalseと評価された場合、つまり、提供されたスコアが80未満の場合にのみステートメントを記述します。

最初の例では、提供されるスコアは 90です。 、80より大きいため、スクリプトの最初のステートメントが実行され、スクリプトが終了します。

ただし、2番目のケースでは、70が提供され、値が80未満であるため、スクリプトはfalseと評価されて最初のステートメントをスキップし、 elseの後に2番目のステートメントの実行に進みます。 ステートメント。

if-elif-elseステートメント

これまで、TrueまたはFalseのいずれかに評価される1つの条件を確認してきました。 elif (else -if)ステートメントは、結果が異なる複数の条件ステートメントがある場合に使用されます。 1つの条件がFalseと評価された場合、他の条件がTrueであるかどうかのチェックに進みます。 if-elif-elseステートメントの簡単な構文は次のとおりです。

if [[ conditional_statement_1 ]]

then

 command_1 

elif [[ conditional_statement_2 ]]

then

 command_2

else

 command_3

fi

以下のスクリプトを検討してください

#!/bin/bash

echo -n "Please Enter a score: "

read score

if [[ $score -ge 90 ]]

then

 echo "Excellent!"

elif [[ $score -ge 70 ]]

then

 echo "Congratulations! Job well done!"

elif [[ $score -ge 50 ]]

then

 echo "Fairly done. There's more room for improvement!"

else

 echo "Poorly done"

fi

この例では、スコアが90以上の場合、すばらしい!というメッセージが出力されます。 ただし、スコアが90未満で70以上の場合は、おめでとうございます!よくできました!
スコアが70未満で、50以上の場合、メッセージが出力されますかなり完了しました。まだまだ改善の余地があります!

そして最後に、スコアが50未満の場合は、不十分と出力されます。

ネストされたifステートメント

ネストされたifステートメントは、別のifステートメント内のifステートメントで構成されます。 1つの条件が当てはまる場合、スクリプトは次の条件のチェックに進みます。以下のデモンストレーションでは、3つの数値の入力値を取得し、そのうちのどれが最大かを確認します。

#!/bin/bash

read -p "Please enter the value of j:" j

read -p "Please enter the value of k:" k

read -p "Please enter the value of l:" l

if [ $j -gt $k ]

then

 if [ $j -gt $l ]

 then

 echo "j is greatest"

 else

 echo "l is greatest"

 fi

else

 if [ $k -gt $l ]

 then

 echo "k is greatest"

 else

 echo "l is greatest"

 fi

fi

概要

これは、bashスクリプトの条件ステートメントの概要です。これまで見てきたように、条件文は、設定された条件式に基づいてスクリプトの結果を決定するために使用されます。うまくいけば、これで条件文の基本的な基盤ができました。


Ubuntu
  1. UbuntuLinuxで稼働時間コマンドを使用する方法

  2. Bashスクリプトに.shまたは.bash拡張子を使用しますか?

  3. Bashスクリプトの実行時に自動確認しますか?

  1. Bash履歴コマンドの使用方法

  2. Bashスクリプトをデバッグする方法は?

  3. Bashスクリプトで文字列を分割する方法

  1. LinuxBashシェルスクリプトで暗号化されたパスワードを使用する方法

  2. VimでBashスクリプトを強調表示するには?

  3. bash スクリプトを実行するには?