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