それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

bashで10回ループ(Bashによる指定回ループとファイル名を001にする)

アクセスログ見てたらBashでループさせたい人が多いようなので。

BASHで10回ループ

for i in {0..10};\
do \
  echo $i;\
done;

指定回数分ループするときは{}(カーリーブレース)で囲むのがミソ。

seq を使う例
for i in `seq 1 10 `;\
do \
  echo $i;\
done;

`seq 1 10 ` は覚えにくいし直感的とは言い切れない

007.txtのような0埋めにする

007.txtのような0パディングにするにはsprintfと組み合わせる

for i in {0..10};\
  do name=$(printf accesslog.%03d.log $i);\
  echo $name;\
done;
accesslog.000.log
accesslog.001.log
accesslog.002.log
accesslog.003.log
accesslog.004.log
accesslog.005.log
accesslog.006.log
accesslog.007.log
accesslog.008.log
accesslog.009.log
accesslog.010.log


詳しくは以前のエントリを参照のこと。bashで指定回数ループして綺麗なファイル名を作る

ls の結果についてループする

for name in $(ls /home);\
  do echo $name;
done;

takuya
natsuki
wabisuke
kazuma
king-kazuma

この辺からはRuby/Perlワンライナーやcut/sed/awk使った方が良いと思うんだけど

whileやuntilは、Bashシェルスクリプト書くときに使うけど、低機能なBashよりスクリプト言語使う方がラクよ。