【シェル】外部ファイルを配列に読み込んで一行ずつ処理する方法

外部ファイルとなるファイルリストを読み込んで、一行ずつ処理を実行するシェル・スクリプトを作成する必要が出てきましたのでその方法をメモ的にご紹介です。

処理の流れ

処理は単純です。

まずは区切り文字の環境変数を IFS で指定。
続いて 配列=(‘cat 外部ファイル’) とすれば「配列」に一行ずつ外部ファイルの中身が格納されます。
最後に for文 で配列を全てまわして処理すればOKです。

シェルの中身

シェルの中身はこのような感じになります。

#!/bin/sh

# 区切り文字を改行コードに指定
IFS=$'\n'

# ファイルを配列に読み込む
file=(`cat "$1"`)

# 行ごとに繰り返し処理を実行
ln=0
for line in "${file[@]}"; do
    ls -l $line
done

実行結果

このような感じで実行されます。

# ./compression.sh filelist.txt
-rw-r--r-- 1 root root 209715200 10月  6 15:06 /root/cron/testdata1.dump
-rw-r--r-- 1 root root 209715200 10月  6 15:06 /root/cron/testdata2.dump

コメントを残す

メールアドレスが公開されることはありません。