if文
CoddyのTerminalジャーニー「基礎」セクションの一部。レッスン 70/82。
これまで、スクリプトは意思決定を行わずに、すべてのコマンドを上から下へ順番に実行していました。しかし、特定の条件に基づいてスクリプトに異なる処理をさせたい場合はどうでしょうか?そこで登場するのが、if文です。
if文は、スクリプトで判断を行えるようにします。条件がtrueかどうかを確認し、trueの場合はコードのブロックを実行します。基本的な構造は次のとおりです。
#!/bin/bash
age=18
if [ $age -ge 18 ]; then
echo "You are an adult"
fi条件は、前後にスペースを入れて角括弧の中に記述します。thenキーワードは実行するコードの開始を示し、fi(後ろから綴った if)が文を終了します。
条件が偽の場合も、elseを使って処理できます。
#!/bin/bash
age=15
if [ $age -ge 18 ]; then
echo "You are an adult"
else
echo "You are a minor"
fi数値でよく使われる比較演算子には、-eq(等しい)、-ne(等しくない)、-gt(より大きい)、-lt(より小さい)、-ge(以上)、-le(以下)があります。文字列の場合は、等価性には=、不等価性には!=を使用します。
空の値によるエラーを避けるため、常に角括弧の内側にスペースを入れ、変数を引用符で囲むことを忘れないでください。
チャレンジ
簡単check_score.sh という名前のシェルスクリプトを作成し、if 文を使ってテストの点数を評価してください。
スクリプトでは、次のことを行ってください。
- shebang 行(
#!/bin/bash)から始める - 値
75を持つscoreという変数を作成する - if 文を使って、点数が 70 以上かどうかを確認する
- 真の場合は、
You passed!と出力する - 偽の場合は、
You failed.と出力する
スクリプトを実行可能にして、実行してください。点数は 75 なので、出力は次のようになります。
You passed!ヒント: 「以上」の比較には
-geを使用し、角括弧の内側にスペースを入れ、if 文をfiで終了することを忘れないでください。ここにはファイルエディターがないため、ヒアドキュメントを使ってシェルから直接ファイルを書き込みます。
cat > check_score.sh << 'EOF'と入力し、次にスクリプトの各行を入力して、最後にEOFだけを含む行を入力してください。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド