ぽかぽかコード日和

とっても暑い夏の日にプログラミングはじめました☀️

【Shell Script】繰り返し処理

シェルスクリプト
条件に合致している間は、同じ処理を何度も繰り返す処理
(for文、while/until文、select文)についてまとめました。

for文

for文は、指定した回数分、同じ処理を繰り返す。

for 変数名 in リスト
do
  処理
done

  • リストに繰り返す値を複数指定しておく。
  • リストにコマンドを指定することができ、$()または``バッククォートで囲む。
seqで回数を指定する

seqは、指定した回数処理を繰り返すことができる。
- 連続・順序という意味。シーケンス。

#!/bin/bash

for i in $(seq 1 5)
do
 echo $i回目
done
$ ./ファイル名
1回目
2回目
3回目
4回目
5回目

処理が5回繰り返される。

while/until文

while文

while文は、 条件を満たす(真である)間、繰り返し処理を続ける。
条件式が偽になると終了する。 - 条件式はtestコマンドで指定することが多い。

while 条件式
do
  処理
done

#!/bin/bash

num=1

while [ $num -le 10 ]      # $numが10以下の間は
do
   echo $num >> sample.txt  # sample.txtにリダイレクトして
   num=$(($num + 2))      # $numに2を足す
done                 #5回繰り返し$numが10以上になったので偽となり終了

↓.
スクリプトを実行し(ファイル名を指定する方法)
$ ./スプリクトファイル名


sample.txtファイルを見ると
$ less sample.txt

1
3
5
7
9

と出力されている。

until文

until文は、 条件が偽である間、繰り返し処理を続ける。
条件式が真になると終了する。

until 条件式
do
  処理
done

☀︎無限ループ☀︎
無限ループとは、
プログラムが同じ処理を繰り返し終了できない状態になること。

終了する方法は2通りある。
①「ctrl+c」で強制終了する。
②ループ内にbreakコマンドを実行する処理を記述する。

無限ループを作成するには、
while文の条件式でヌルコマンド( : )を使う。 「while : 」

select文

select文は、
端末上にメニュー形式の選択肢を表示して、ユーザーに選ばせることができる
bash のみの内部コマンド

select 変数名 in リスト
do
  処理
done

#!/bin/bash

#1) りんご
#2) みかん
#3) ぶどう
#4) exit

select fruit in りんご みかん ぶどう exit

do
   if [ "$fruit" = "exit" ]; then   #もしfruit変数が”exit”と同じなら
     echo "終了します。"
     break                #処理を終了する。
   fi
                        #”exit”と違うならif文をスキップ

   echo "選んだのは$fruitジュースです。" #ユーザーが選択した番号の変数が入る
done

スクリプト実行すると

1) りんご
2) みかん
3) ぶどう
4) exit
#? 1      #ユーザーが選択
選んだのはりんごジュースです。
#? 2      #ユーザーが選択
選んだのはみかんジュースです。
#? 3      #ユーザーが選択
選んだのはぶどうジュースです。
#? 4      #ユーザーが選択
終了します。

「$REPLY」・・・selectを使用するときに内部で生成される特別な変数


参考にしたサイト