アウトプットができる技術者に

it's a time to take a new step !

Bash for文

list="a b c"
for v in ${list}
do
    echo "v=${v}"
done
  • デリミタの変更

通常はスペース区切でループになるのを変更できる。
例えば、テキストファイルをループするときは改行コードにする。

#!/bin/sh

echo "1 b c" > tmp.txt
echo "2 b c" >> tmp.txt

IFS=$'\n'
for line in `cat tmp.txt`
do
    echo "line=${line}"
done
高速化の話

bashでfor文回すとクッソ遅いです。というわけでTips

  • コマンドじゃなくて、変数展開を使う
for line in `cat tmp.txt`
do
    code=${line:1,5}
    echo "line=${code}"
done
  • テキストに出力するときは 最後に書く(未検証)
for line in `cat tmp.txt`
do
    echo "line=${line}"
done > tmp/output.txt