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