反復構造


 forコマンド

[書式]
  for var in word1 word2 ・・・ wordn
  do
    command
    command
    ・・・・
  done

(例)
  for i in 1 2 3
  do
    echo $i
  done

  for file in text[1-4]
  do
    echo $file
  done

  for file in 'cat dog bird'
  do
    run $file  # 順に実行させる
  done

  for file in *
  do
    run $file  # カレントディレクトリ内のファイルを順に実行させる
  done

  for arg in $*
  do
    echo $arg   # コマンド引数を順に表示
  done

$@変数

$@を使うと単一引用符で囲まれた文字列を1つの引数として扱うことができる。$*では常にスペースで区切られた文字列が1つの引数とみなされる。

for $i in "$@"  #  " "で囲まれていることに注意
do
  echo $i
done

リストを持たないforコマンド

リストを持たないforコマンドはコマンド行に入力されたすべての引数をすべて実行する。

for var
do
  echo $var
done

 

 

whileコマンド

[書式]
  while command1
  do
    command
    command
     ・・・・
  done

(例)
while [ "$#" -ne 0]
do
  echo "$1"
  shift
done

 

Untilコマンド

[書式]
  until command1
  do
    command
    command
     ・・・・
  done

 

ループからの脱出(break)

breakコマンドを使うとループの途中でループから抜け出ることができる。

(例)
  while true
  do
    if ["$cmd" = quit]
    then
       break
    else
      ・・・・
    fi
  done

 

次のループ(continue)

continueコマンドを使うとループの途中で残りのコマンドをスキップして、次のループサイクルを開始できる。

 

 ループのバックグランドでの実行

doneの後ろに&を付けるとループをバックグランドで実行できる。

(例)
  while true
  do
  ・・・・
  done &