「シェルスクリプトの基礎 - 繰り返し文」の版間の差分

ナビゲーションに移動 検索に移動
244行目: 244行目:
条件の指定にはtestコマンド(または[]コマンド)を使用する場合が多いが、それ以外も条件として指定することができる。<br>
条件の指定にはtestコマンド(または[]コマンド)を使用する場合が多いが、それ以外も条件として指定することができる。<br>
<br>
<br>
===== ファイルから読み込む =====
==== ファイルから読み込む ====
readコマンドを使用してlist.txtファイルの内容を読み込み、1行ずつ表示させる。<br>
readコマンドを使用してlist.txtファイルの内容を読み込み、1行ずつ表示させる。<br>
以下のシェルスクリプトを実行すると、list.txtファイルの内容を1行ずつ読み込み、その内容が表示される。<br>
以下のシェルスクリプトを実行すると、list.txtファイルの内容を1行ずつ読み込み、その内容が表示される。<br>
252行目: 252行目:
  ghi
  ghi
<br>
<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/bash
  #!/bin/bash
   
   
259行目: 259行目:
     echo "$line"
     echo "$line"
  done < ./list.txt
  done < ./list.txt
  </source>
   
<br>
  # 出力
  # 出力
  abc
  abc
  def
  def
  ghi
  ghi
</syntaxhighlight>
<br>
<br>
 
==== 無限ループ ====
===== 無限ループ =====
条件にNULLコマンドである:(コロン)を指定すると、無限ループになる。<br>
条件にNULLコマンドである:(コロン)を指定すると、無限ループになる。<br>
NULLコマンド:は、何もせずに終了コード0(真)を返すので、条件が常に真となるため、無限ループになる。<br>
NULLコマンド:は、何もせずに終了コード0(真)を返すので、条件が常に真となるため、無限ループになる。<br>
273行目: 272行目:
無限ループを終了させるには、Ctrlキー + Cキーで強制的に終了させるか、<br>
無限ループを終了させるには、Ctrlキー + Cキーで強制的に終了させるか、<br>
処理部分でif文またはcase文などの条件分岐で、<code>break</code>、<code>return</code>、<code>exit</code>コマンドを実行する。<br>
処理部分でif文またはcase文などの条件分岐で、<code>break</code>、<code>return</code>、<code>exit</code>コマンドを実行する。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  while :
  while :
  do
  do
     # 処理
     # 処理
  done
  done
  </source>
  </syntaxhighlight>
<br>
<br>
以下の例では、無限ループにcase文(条件分岐)を組み込んでいる。<br>
以下の例では、無限ループにcase文(条件分岐)を組み込んでいる。<br>
287行目: 286行目:
[y]キーまたは[n]キー以外のキーを入力すると、<code>Push y or n key.</code>と表示する。<br>
[y]キーまたは[n]キー以外のキーを入力すると、<code>Push y or n key.</code>と表示する。<br>
その後、[y]キーまたは[n]キーのいずれかを入力するように促すメッセージを表示して、処理を繰り返す。<br>
その後、[y]キーまたは[n]キーのいずれかを入力するように促すメッセージを表示して、処理を繰り返す。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/bash
  #!/bin/bash
   
   
300行目: 299行目:
     esac
     esac
  done
  done
  </source>
   
<br>
  # 出力
  # 出力
  Repeat? (y/n) :q  ← yキーまたはnキー以外を入力
  Repeat? (y/n) :q  ← yキーまたはnキー以外を入力
309行目: 307行目:
  Repat? (y/n) :n    ← nキーを入力
  Repat? (y/n) :n    ← nキーを入力
  Repeat end.
  Repeat end.
</syntaxhighlight>
<br><br>
<br><br>


案内メニュー