シェルスクリプトのfor分の書き方を徹底解説

今回はシェルスクリプトのfor文の書き方を徹底解説したいと思います。

まずは、基本的な書き方から紹介していきたいと思います。

<スポンサードリンク>

1. inを使った基本的なfor文

#!/bin/bash

for i in a b c d e
do
  echo $i
done

inを使う書き方です。inの第一引数からfor文の変数iに代入され実行されます。

上記シェルスクリプトを実行すると、「a」から「e」まで順次表示されます。

% bash test.sh
a
b
c
d
e

2. seqコマンドを使ったfor文

#!/bin/bash

for i in `seq 10`
do
  echo ${i}回目
done

次にseqコマンドを使ったfor文です。

ループ回数が決まっている場合は、seqの引数としてループ回数を指定して書くと便利です。

% bash test.sh
1回目
2回目
3回目
4回目
5回目
6回目
7回目
8回目
9回目
10回目

3. 配列の要素分for文を回す

#!/bin/bash

array=(1 2 3 4 5 6 7 8 9 10)

for i in ${array[@]}
do
  echo ${i}回目
done

次は配列の要素を使ったfor文です。

実行結果は、下記の通りです。

% bash test.sh
1回目
2回目
3回目
4回目
5回目
6回目
7回目
8回目
9回目
10回目

4. 配列の要素数分for文を回す

#!/bin/bash

array=(1 2 3 4 5 6 7 8 9 10)

for i in `seq ${#array[@]}`
do
  echo ${i}回目
done

配列の要素数分for分を回したい場合の書き方です。
#array[@]でなく、#array[*]でも同様の結果になります。

% bash test.sh
1回目
2回目
3回目
4回目
5回目
6回目
7回目
8回目
9回目
10回目

<スポンサードリンク>


5. コマンドの実行結果を利用

#!/bin/bash

for file_name in `ls /var/log/*wifi*`
do
  echo ${file_name}
done

2のseqコマンドを使ったfor分もここに含まれますが、上のサンプルのようにコマンドの実行結果をinの引数としてfor分を書くこともできます。

コマンドを`(シングルクオート)で囲んで書くだけです。

上記スクリプトの実行結果は下記のようになります。

% bash test.sh
/var/log/wifi.log
/var/log/wifi.log.0.bz2
/var/log/wifi.log.1.bz2
/var/log/wifi.log.2.bz2
/var/log/wifi.log.3.bz2
/var/log/wifi.log.4.bz2
/var/log/wifi.log.5.bz2

6. ファイルを読み込みfor分を回す

あらかじめ下記のようなファイルを作成しておきます。

% cat test.txt 
a
b
c
d
e
f
g

5の「コマンドを利用したfor文」を応用してファイルの中身を表示するfor分を書きたいと思います。

#!/bin/bash

for line in `cat ./test.txt`
do
  echo ${line}
done

上記スクリプトの実行結果は、下記の通りになります。

% bash test.sh 
a
b
c
d
e
f
g

 

7. 指定した数値の範囲のfor文を回したい

100から110まで合計したい場合などは、上記のように書きます。

#!/bin/bash

num=0

for i in {100..110}
do
  num=$((num + i))
done

echo $num

上記を実行すると下記のようになります。

% bash test.sh
1155

もしよろしければ、フォロー、他の記事もよろしくお願いいたします(.. )//

関連記事

シェルスクリプトのif文の書き方を徹底解説

Linuxで特定の文字が含まれる行数を取得したい

シェルスクリプトのfor分の書き方を徹底解説

【初心者向け】シェルスクリプトの書き方入門 徹底解説

シェルスクリプトで変数と文字列を結合する

シェルスクリプトの関数の書き方を徹底解説

 

 

スポンサードリンク



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA