はじめに
こんにちは!今回はfor文について解説します。
forは繰り返し処理(ループ)を行うための構文です。「リストの要素を1つずつ処理する」とか「1から10まで繰り返す」みたいな時に使います。
for文とは
forは、指定した回数や範囲で処理を繰り返すための制御構文です。
複数のファイルを一括処理したり、連番で何か処理したりする時に便利です。手作業でやったら大変な繰り返し作業を、サクッと自動化できます。
基本構文
リストを使った形
|
|
C言語風の形(数値ループ)
|
|
使用例
例1: 基本的なリストループ
|
|
実行結果:
|
|
例2: 数値の範囲指定
|
|
実行結果:
|
|
{1..5}で1から5までの範囲を指定できます。
例3: C言語風のループ
|
|
実行結果:
|
|
こっちの書き方の方が慣れてる人もいるかもですね。
例4: ファイルのループ処理
|
|
実行結果:
|
|
カレントディレクトリの.txtファイルを全部処理できます。
例5: 配列のループ
|
|
実行結果:
|
|
配列の要素を1つずつ処理できます。
例6: コマンドの出力をループ
|
|
ファイルの内容を1行ずつ処理したり。
例7: 2つずつ増やす
|
|
実行結果:
|
|
{開始..終了..増分}で刻み幅を指定できます。
Tips・注意点
-
ワイルドカードが便利:
*.txtとか*.jpgとかで一括処理できます1 2 3for img in *.jpg; do convert "$img" "${img%.jpg}.png" done -
スペースを含むファイル名: ダブルクォートで囲みましょう
1 2 3 4for file in *.txt; do cat "$file" # 正しい cat $file # ファイル名にスペースがあるとエラー done -
ファイルが存在しない場合:
*.txtにマッチするファイルがないと、*.txtそのものがリストになっちゃいます1 2 3 4for file in *.txt; do [ -f "$file" ] || continue # ファイルが存在しない場合スキップ echo "$file" done -
break と continue: ループを抜けたりスキップしたり
1 2 3 4 5 6 7 8 9 10 11 12 13for i in {1..10}; do if [ $i -eq 5 ]; then break # ループを抜ける fi echo $i done for i in {1..5}; do if [ $i -eq 3 ]; then continue # この回をスキップ fi echo $i done -
seq コマンドも使える: 古いシステムで
{1..10}が使えない場合1 2 3for i in $(seq 1 10); do echo $i done
実践的な使い方
ファイルの一括リネーム
|
|
バックアップスクリプト
|
|
ディレクトリの一括作成
|
|
ログファイルの処理
|
|
複数サーバーへのping
|
|
ファイルの内容を一括変換
|
|
まとめ
今回はfor文について解説しました。
ポイント:
forで繰り返し処理ができる- リスト、範囲、ファイルなど色々な対象をループできる
- ワイルドカードで複数ファイルを一括処理できる
- 変数はダブルクォートで囲むのが安全
ファイルの一括処理とか、同じ作業を何回も繰り返す時にfor文は超便利です。手作業でやったら面倒な作業も、スクリプト一発で終わらせられます。
次回もLinuxコマンドの学習を続けていきましょう!