自転車とプログラミング

自転車メーカーに勤める会社員がプログラミングを学ぶ中で感じたことを書きます。最近サービス作りました。

シェルスクリプトのfor文

前置き

シェルスクリプトの学習中。本を読んでfor文をわかったつもりだったが理解しきれず。アクティブラーニングとしてブログ化してます。

for文とは

値による条件分岐や繰り返し処理を指す「制御構造」を利用するための複合コマンドのこと。 for文は「単語のリストに対して繰返処理を行う構文」。

for文の構造

for 変数名 in リスト
do
    繰り返し処理
done

「繰り返し処理」の中ではリスト内の要素の値が変数名で参照できる。

for分の例

#!/bin/bash

for name in inu neko panda
do
    echo $name
done

このときの実行結果としてinu neko pandaがそれぞれechoで標準出力されることになります。

for文の特徴

その1 

リストの部分は文字列だけでなく、パス名展開も利用できます。たとえばカレントディレクトリの.txtファイルに対して処理するときは*.txtと記述すればOK。

その2

リスト部分はコマンド置換も可能です。たとえば数値列を出力するseqを使えば1〜10までの連番で処理をさせることができます。

その3

for文ではリストとして$@と指定して、すべてのコマンドライン引数に処理を行うことができる。$@を対象とすることがとても多いようで、in リストを記述しない場合は自動的に$@とみなされるようになっている。

どんなときに使うのか

リストのパス名展開を駆使して網羅的な処理を施すのが得意なように思える。