【初心者向け】シェルスクリプトforの使い方(各種サンプル付き)

シェルスクリプトのfor
  • このエントリーをはてなブックマークに追加
  • Pocket

forはifと並んでプログラミングでなくてはならない文法だ。

シェルスクリプトにも当然用意されていて、繰り返し何かを行うときに使われる。

forとは

プログラミングを触ったことがある人はご存知の通り、「for」は「繰り返し」の制御文だ。

例えば、残金が100円未満になるまでおでんを買い続けるというプログラミングは下記のようになるが、これもforで作成することができる。

フローチャート08

シェルスクリプトでのforは、C言語やJavaとくらべると少々勝手が違うように思える。Javaなどのfor文は「ループカウンタ」を用意しカウンタの数だけ繰り返しすることが殆どだろう。しかしbashの場合は「ワードリスト」を使って繰り返しをするという違いがある。

実際Javaなどのfor文のような記述も出来るようになっているが、ワードリストをつかうほうがbashでは一般的だ。

ワードリストの数だけ繰り返し処理がおこなわれることになるというのは、少々イメージしにくいかもしれない、そこは、後ほどサンプルコードをみれば、捕まえるはずだ。

シェルスクリプトでのforは、比較的繰り返し条件が単純な場合に利用される。複雑な条件式が必要な場合別途紹介する「while」を使用するのが一般的だろう。

スクリプトにおいて繰り返し処理は「単調な繰り返し作業を自動化」するのに重要な役割をはたすので積極的に活用しよう。

書式について

一般的な書式

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

リストの個数だけ処理が実行されるという書式になる。

もしくはC言語やJava風の記述が可能(bashの場合のみ)

C言語やJavaなど一般的なプログラミング言語のような記述も可能だ。

10回testを表示する場合の例

for ((i=0 ; i<10 ; i++))
do
echo "test"
done

「()」が二重になるところとセミコロンに気をつけてほしい

シェルスクリプトforのサンプルコード

それでは実際のコードを見ていこう。まずはシンプルな例を確認する。

vi for-ex1.sh

実行結果

for example01

このように$iに順番にリストが代入されて、表示されることになる。

もう少し実践的なfor文

seqを使う

seqは連続した数字を出力するコマンドだ。こうした一見不思議なコマンドは、スクリプト記述の時に役に立つように作られていることが多い。

例えば、

$ seq 10

とすると1から10までの数字が表示される。

これを利用すると以下のようにforを記述することが出来る

vi for-ex2.sh

実行結果

for example02

必ずリストの中身を使わなければならないというわけではない

また実際にリストの数だけ繰り返しがおこなわれるが、かならずしもリストの内容を使用しなければならないというわけではない。

vi for-ex3.sh

実行結果

for example03

繰り返しを利用しバックアップをとる場合など

vi for-ex4.sh

実行結果

for example04

シェル上にて一行で繰り返しを行う。

$ for var in seq 10; do touch testfile"$var".txt; done

実行結果

連番のファイルなどをパッと作りたいしかし、スクリプトを書くほど大規模ではないなど、そういうときはコマンドプロンプトから直接for文を呼び出すこともできる。

上の例を参照してほしい。セミコロンの位置に注意しよう。forの条件のあとdoの条件のあとにセミコロンが挿入される。この例ではtestfile1.txtからtestfile10.txtが作成される。

セミコロンがない場合、以下のような対話的な処理となる。

実行結果

testfile

まとめ

このページではシェルスクリプトのforについて、色々なパターンをまとめて紹介した。

いずれもシェルスクリプトを使う上でなくてはならない文法だ。しっかり押さえておこう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. 健太郎 より:

    ×いろいろなパターンを上記で初回したが
    ○いろいろなパターンを上記で紹介したが

  2. 健太郎 より:

    おでん100円以上のNOは100円未満です。

    1. リカレントテクノロジー より:

      ご指摘いただきありがとうございます。
      100円以下→100円未満に訂正いたしました。
      また、一部文章におかしな部分がありましたので訂正いたしました。

      引き続き、ご愛読のほど、よろしくお願いいたします。

健太郎 へ返信する コメントをキャンセル

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する