📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
編集の要約なし |
|||
| 4行目: | 4行目: | ||
<br><br> | <br><br> | ||
== | == for文 == | ||
変数iに1から5までの数字を指定して、変数に代入された値をechoで表示させるというサンプルコードを以下に記述する。<br> | 変数iに1から5までの数字を指定して、変数に代入された値をechoで表示させるというサンプルコードを以下に記述する。<br> | ||
<source lang="sh"> | <source lang="sh"> | ||
| 23行目: | 23行目: | ||
<br><br> | <br><br> | ||
== | == for文におけるリストの指定 == | ||
リストの指定方法を以下に記載する。<br> | リストの指定方法を以下に記載する。<br> | ||
<br> | <br> | ||
| 140行目: | 140行目: | ||
done | done | ||
</source> | </source> | ||
<br><br> | |||
== while文 == | |||
以下のサンプルコードでは、変数iが6より小さい間だけ、変数iに代入された値をechoで表示した後、<br> | |||
exprコマンドを使用して変数iに1を加算する。<br> | |||
<source lang="sh"> | |||
#!/bin/bash | |||
i=1 | |||
while [ $i -lt 6 ] | |||
do | |||
echo "$i" | |||
i=`expr $i + 1` | |||
done | |||
</source> | |||
<br> | |||
# 出力 | |||
1 2 3 4 5 | |||
<br> | |||
bashのみだが、exprコマンドは遅いので(())を使用した算術式の方が処理が速い。<br> | |||
<source lang="sh"> | |||
#!/bin/bash | |||
i=1 | |||
while ((i < 6)) | |||
do | |||
echo $i | |||
i=$(( i + 1 )) | |||
done | |||
</source> | |||
<br><br> | |||
== while文における条件の指定 == | |||
条件の指定にはtestコマンド(または[]コマンド)を使用する場合が多いが、それ以外も条件として指定することができる。<br> | |||
<br> | |||
===== ファイルから読み込む ===== | |||
readコマンドを使用してlist.txtファイルの内容を読み込み、1行ずつ表示させる。<br> | |||
以下のシェルスクリプトを実行すると、list.txtファイルの内容を1行ずつ読み込み、その内容が表示される。<br> | |||
list.txtファイルの内容 | |||
abc | |||
def | |||
ghi | |||
<br> | |||
<source lang="sh"> | |||
#!/bin/bash | |||
while read line | |||
do | |||
echo "$line" | |||
done < ./list.txt | |||
</source> | |||
<br> | |||
# 出力 | |||
abc | |||
def | |||
ghi | |||
<br> | |||
===== 無限ループ ===== | |||
条件にNULLコマンドである:(コロン)を指定すると、無限ループになる。<br> | |||
NULLコマンド:は、何もせずに終了コード0(真)を返すので、条件が常に真となるため、無限ループになる。<br> | |||
無限ループを終了させるには、Ctrlキー + Cキーで強制的に終了させるか、<br> | |||
処理部分でif文またはcase文などの条件分岐で、break、return、exitコマンドを実行する。<br> | |||
<source lang="sh"> | |||
while : | |||
do | |||
# 処理 | |||
done | |||
</source> | |||
<br> | |||
以下のシェルスクリプトに、無限ループにcase文(条件分岐)を組み込む。<br> | |||
<br> | |||
"Repeat? (y/n) :"の表示後、yキーを入力すると"Repeat!"と表示して処理が繰り返され、<br> | |||
nキーを入力すると、"Repeat end."と表示して処理を終了させる。<br> | |||
<br> | |||
yキーまたはnキー以外のキーを入力すると、"Push y or n key."と表示して、<br> | |||
yキーまたはnキーのいずれかを入力するように促すメッセージを表示して処理を繰り返す。<br> | |||
<source lang="sh"> | |||
#!/bin/bash | |||
while : | |||
do | |||
read -p "Repat? (y/n) :" key | |||
case "$key" in | |||
y) echo "Repeat!";; | |||
n) echo "Repeat end." | |||
break ;; | |||
*) echo "Push y or n key.";; | |||
esac | |||
done | |||
</source> | |||
<br> | |||
# 出力 | |||
Repeat? (y/n) :q ← yキーまたはnキー以外を入力 | |||
Push y or n key. | |||
Repat? (y/n) :y ← yキーを入力 | |||
Repeat! | |||
Repat? (y/n) :n ← nキーを入力 | |||
Repeat end. | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:シェルスクリプト]] | [[カテゴリ:シェルスクリプト]] | ||