体力,気力,ときどき知力

情報系大学院生 兼 HPC系ソフトウェアエンジニアのメモ書き.やったことを貼って後日にコピペ再現するために書いているので新規性・汎用性・芸術性は考えてません.数値計算,高精度演算,SIMD, vim, Linuxなど.

シェルスクリプトでプログラムの計測とかをするために

研究室を見てると,みんなシェルスクリプトを書いてるみたいだけど,シェルスクリプトのfor文には2種類ある事を知らない人が多いみたい.

僕はあんまり機会がなくて(2)は使わないんだけど,有効なので紹介する.

 

(1)よくあるfor文

for ( (n=0 ; n<100 ; n++ ) )

do

echo cat $n.txt

done

 

(2)カウンタに文字式を使う

for文の中は上と同じものだったとして,

do

echo $n

done

for文の条件式をこのように書くと

 

$ for n in 1 2 3

>> 1 2 3 (本当は開業されるけど省略)

 

$ for n in $(ls | grep *.txt)

>> hoge.txt fuga.txt hige.txt

 

$for n in $(cat hoge.txt)

>> セパレータで区切られたhoge.txt内の文字列を出力

 

$for n in $(awk '{print$1}' hoge,txt)

>> セパレータで区切られたhoge.txt内の第一フィールドの文字列を出力

 

こんな感じ.知らない人は使って.