反復構造
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 &