「シェルスクリプトの基礎 - 条件分岐」の版間の差分

ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
7行目: 7行目:
*: <br>
*: <br>
*: 以下は、testコマンドと[]を使用した記述例である。
*: 以下は、testコマンドと[]を使用した記述例である。
  <source lang="sh">
  <syntaxhighlight lang="sh">
  # testコマンドを使用
  # testコマンドを使用
  if test $NUM1 -eq $NUM2 ; then
  if test $NUM1 -eq $NUM2 ; then
17行目: 17行目:
     echo 'NUM1 equal NUM2'
     echo 'NUM1 equal NUM2'
  fi
  fi
  </source>
  </syntaxhighlight>
<br>
<br>
* case文
* case文
*: case文は判定対象となる値と事前に作成した複数の条件を上から順に比較して、マッチした条件の処理を実行させることができる。
*: case文は判定対象となる値と事前に作成した複数の条件を上から順に比較して、マッチした条件の処理を実行させることができる。
*: どの条件にもマッチしない場合は何も処理を行わない。
*: どの条件にもマッチしない場合は何も処理を行わない。
  <source lang="sh">
  <syntaxhighlight lang="sh">
  case 値 in
  case 値 in
     条件1)
     条件1)
34行目: 34行目:
       ;;
       ;;
  esac
  esac
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


== if文 ==
== if文 ==
===== 条件分岐 if then fi =====
==== 条件分岐 if then fi ====
この条件分岐は、条件式が真の場合のみ指定された処理を行い、それ以外の場合は何も行わない。<br>
この条件分岐は、条件式が真の場合のみ指定された処理を行い、それ以外の場合は何も行わない。<br>
ここでは、NUM1とNUM2の値を比較して、等しい場合にメッセージを表示するというスクリプトを記述する。<br>
ここでは、NUM1とNUM2の値を比較して、等しい場合にメッセージを表示するというスクリプトを記述する。<br>
<br>
<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/bash
  #!/bin/bash
  NUM1=10
  NUM1=10
50行目: 50行目:
     echo 'NUM1 equal NUM2'
     echo 'NUM1 equal NUM2'
  fi
  fi
  </source>
  </syntaxhighlight>
<br>
<br>
===== 条件分岐 if then else fi =====
==== 条件分岐 if then else fi ====
この条件分岐は、条件式が真の場合に処理1を行い、それ以外の場合は処理2を行う。<br>
この条件分岐は、条件式が真の場合に処理1を行い、それ以外の場合は処理2を行う。<br>
ここでは、NUM1とNUM2の内容の真偽を判別し、同じ場合と異なる場合によって表示させるメッセージを変更するというスクリプトを記述する。<br>
ここでは、NUM1とNUM2の内容の真偽を判別し、同じ場合と異なる場合によって表示させるメッセージを変更するというスクリプトを記述する。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/bash
  #!/bin/bash
  NUM1=10
  NUM1=10
65行目: 65行目:
     echo 'NUM1 not equal NUM2'
     echo 'NUM1 not equal NUM2'
  fi
  fi
  </source>
  </syntaxhighlight>
<br>
<br>
===== 条件分岐 if then elif then else fi =====
==== 条件分岐 if then elif then else fi ====
この条件分岐は、条件式1が真の場合は処理1を行い、条件式1が偽で条件式2が真の場合は処理2を行い、それ以外の場合は処理3を行う。<br>
この条件分岐は、条件式1が真の場合は処理1を行い、条件式1が偽で条件式2が真の場合は処理2を行い、それ以外の場合は処理3を行う。<br>
ここでは、NUM1とNUM2の値を比較して、内容が等しい、NUM1の方が大きいか小さいかによって表示するメッセージを変えるというスクリプトを記述する。<br>
ここでは、NUM1とNUM2の値を比較して、内容が等しい、NUM1の方が大きいか小さいかによって表示するメッセージを変えるというスクリプトを記述する。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/bash
  #!/bin/bash
  NUM1=20
  NUM1=20
82行目: 82行目:
     echo 'NUM1 smaller than NUM2'
     echo 'NUM1 smaller than NUM2'
  fi
  fi
  </source>
  </syntaxhighlight>
<br>
<br>
==== 短絡演算子 ====
==== 短絡演算子 ====
100行目: 100行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
 
==== testコマンドの比較条件 ====
===== testコマンドの比較条件 =====
testコマンドは、条件式の真偽を判別して、その結果を返すコマンドである。<br>
testコマンドは、条件式の真偽を判別して、その結果を返すコマンドである。<br>
使用できる比較条件は数多くあるが、使用頻度の高いものを抜粋して記載する。<br>
使用できる比較条件は数多くあるが、使用頻度の高いものを抜粋して記載する。<br>
179行目: 178行目:


== case文 ==
== case文 ==
===== 条件の指定について =====
==== 条件の指定について ====
条件の指定にはワイルドカードを使用することができる。<br>
条件の指定にはワイルドカードを使用することができる。<br>
  * すべての文字列にマッチ
  * すべての文字列にマッチ
211行目: 210行目:
  ABC | abc : 「ABC」か「abc」のどちらかにマッチ
  ABC | abc : 「ABC」か「abc」のどちらかにマッチ
<br>
<br>
===== サンプルコード =====
==== サンプルコード ====
入力したキーによって、アルファベット、数字、その他の判別を行いメッセージを表示するシェルスクリプトを記述する。<br>
入力したキーによって、アルファベット、数字、その他の判別を行いメッセージを表示するシェルスクリプトを記述する。<br>
Tを入力すると、[a-zA-Z]の条件にマッチするので、Alphabet enteredと表示される。<br>
Tを入力すると、[a-zA-Z]の条件にマッチするので、Alphabet enteredと表示される。<br>
0を入力すると、[0-9]の条件にマッチするので、Number enteredと表示される。<br>
0を入力すると、[0-9]の条件にマッチするので、Number enteredと表示される。<br>
アルファベットや数字以外の文字を入力すると、*の条件にマッチするので、No alphabet or number enterdと表示される。<br>
アルファベットや数字以外の文字を入力すると、*の条件にマッチするので、No alphabet or number enterdと表示される。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/bash
  #!/bin/bash
   
   
227行目: 226行目:
     *)        echo 'No alphabet or number enterd' ;;
     *)        echo 'No alphabet or number enterd' ;;
  esac
  esac
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:シェルスクリプト]]
[[カテゴリ:シェルスクリプト]]

案内メニュー