ファイルの読み込み

シェルのコーディングを良く忘れるのでこれをメモ。特にファイルの読み込みは、よく忘れ去っています。
この例では、空行をスキップする処理を加えています。

ファイル読み込みサンプル(断片)

# ファイルの存在および読み込み権限確認
if [ ! -r data.txt ]; then
  echo '入力ファイル[data.txt]が見つからないか、または読み込み権限がありませんでした。処理
中断(101)します。'
  exit 101
fi

# ファイルの読み込み。空行は処理スキップします。
while read line
do
  if [ ${#line} -eq 0 ]; then
    continue
  fi
  echo '読み込んだ行データは'${line}'でした。'
done <data.txt
ポイント
  • ファイルの存在および読み込み権限チェックをおこないましょう。
  • 空行を処理スキップする必要は、いろいろな場面で存在するでしょう。
  • サブシェルを用いない、安全な書き方です。

ファイル読み込みサンプル(断片): サブシェルを利用した例

# ファイルの存在および読み込み権限確認
if [ ! -r data.txt ]; then
  echo '入力ファイル[data.txt]が見つからないか、または読み込み権限がありませんでした。処理
中断(101)します。'
  exit 101
fi

# ファイルの読み込み。空行は処理スキップします。
cat data.txt | sed -e '/^$/d' | while read line
do
  echo '読み込んだ行データは'${line}'でした。'
done
ポイント
  • サブシェルを使った書き方です。子プロセスになるので副作用が発生する場合があります。