Unix / Linux – シェルの意思決定

スポンサーリンク

本当にわからないとこがあった場合一人では解決できません。
『teratail』とはエンジニア特化型のQ&Aサイトです。 すべてのエンジニアさんが抱えている悩みを共有して 解決するための質問サイトです
無料なのでまずは登録して使ってみてください。メールアドレスだけで登録可能です ----------------------------------------------------------------------------------------

この章では、Unixにおけるシェルの意思決定を理解します。シェルスクリプトを作成する際に、指定された2つのパスから1つのパスを取る必要がある場合があります。例えば条件指定などがあります。

例えば朝6時に起きれば朝ごはんを食べる、7時なら食べるなど。

したがって、条件付きステートメントを使用して、プログラムが正しい決定を下し、適切なアクションを実行できるようにする必要があります。

Unixシェルは、さまざまな条件に基づいて異なるアクションを実行するために使用される条件文をサポートしています。ここでは、ここで2つの意思決定の声明を理解するでしょう –

if … elseステートメント


else文が有用な意思決定ステートメントであり、与えられたオプションのセットからオプションを選択するために使用できる場合は下記を使います。

Unixシェルはif … else文の次の形式をサポートしています-

    • a=10
      b=20
      
      if [ $a == $b ]
      then
         echo "a is equal to b"
      fi
      
      if [ $a != $b ]
      then
         echo "a is not equal to b"
      fi
      if else fi 文
      a=10
      b=20
      
      if [ $a == $b ]
      then
         echo "a is equal to b"
      else
         echo "a is not equal to b"
      fi

      if … elif … else … fi文

a=10
b=20

if [ $a == $b ]
then
   echo "a is equal to b"
elif [ $a -gt $b ]
then
   echo "a is greater than b"
elif [ $a -lt $b ]
then
   echo "a is less than b"
else
   echo "None of the condition met"
fi

ほとんどのif文は、前の章で説明した関係演算子を使用してリレーションをチェックします。

ケース… esac声明


複数のif … elifステートメントを使用して複数分岐を実行することができます。しかし、これは常に最良の解決策ではありません。特に、すべてのブランチが単一の変数の値に依存する場合にはそうです。

Unixシェルはcase … … esacステートメントをサポートしています。この状況を正確に処理し、if … elifステートメントを繰り返すより効率的です。

ここに詳細に記述されているesacステートメントのケースは1つだけです –

  • case … esacステートメント
  • case word in
       pattern1)
          Statement(s) to be executed if pattern1 matches
          ;;
       pattern2)
          Statement(s) to be executed if pattern2 matches
          ;;
       pattern3)
          Statement(s) to be executed if pattern3 matches
          ;;
       *)
         Default condition to be executed
         ;;
    esac

次のページ

前のページ

スポンサーリンク

プログラミングは独学からは挫折の可能性が高いです。まずは無料体験ができる
コードキャンプが本当におすすめ。無料体験でわからないところを聞きましょう。
転職補助つき。カリキュラム終了後に転職紹介をしてくれます。