2009/12/08

短期集中連載 第1弾 『sh ファイル(スクリプト)入門』

金崎研では数値計算をたくさんやるので、
同じ作業を30回やらないといけない場合がよくあります。
コマンドライン(cygwinなど)で計算の後処理とかやってると
わけわかんなくなってきます。
その時に役立つのが“スクリプトファイル”です。

/*-------------------------------------------------------*/
≪スクリプトファイルとは?≫
 スクリプトファイルとは簡単に言うとUNIXコマンドを並べたファイルということです。
同じ作業を何十回も繰り返す、決まった作業を勝手にやる、
などあらかじめ動作内容の分かっているときは
これを作ると操作がぐっと楽になります。

/*-------------------------------------------------------*/
≪Hallo World!!≫
 では、入門です。入門はやっぱりHallo World!!
まずは以下の文章を test.sc というファイルに入れてみよう。

#!/bin/shecho 'Hallo World!!'

こいつのいるディレクトリで

sh test.sc

と打つと Hallo World と表示されます。
これが一番簡単なスクリプトファイルです。
この例からわかるようにスクリプトファイルの中では 'ls, cd, echo' といった
通常のコマンドがそのまま使えます。

/*-------------------------------------------------------*/
≪繰り返し1≫
では同じ作業を繰り返したい時はどうすればいいのか?
それには

for i in N1 N2 N3
do
”何か作業”
done

とします。これは i に N1, N2, N3 と代入して繰り返す、という意味になります。
ここで注意するのは N1, N2, N3 は連続してなくてもいいということです。
では、具体例をあげましょう。
さっきの test.sc を以下のように書きなおします。

#!/bin/sh
for i in 10 20 30
do
echo $i
echo 'Hallo World!!'
done

こいつを同じように

sh test.sc

で作動させると、
10
Hallo World!!
20
Hallo World!!
30
Hallo World!!

のように表示されます。
i に10,20,30が順に代入されたうえでdo と done に挟まれた作業が繰り返されています。

/*-------------------------------------------------------*/
≪繰り返し2≫
しかし、このままでは30回同じ作業を繰り返す場合、

for i in 1 2 3 4 ..... 28 29 30
do
”何か作業”
done

としなくてはいけません。
30ならいいかもしれませんが、100とか200になったらめんどくさいです。
そこで seq を使います。
具体的には for の後の数字を$(seq 1 30)とすることです。
100 回 Hallo World!! を表示する時の test.sc は下のようになります。

#!/bin/sh
for i in $(seq 1 100)
do
echo $i
echo 'Hallo World!!'
done

これを作動させると

1
Hallo World!!
2
Hallo World!!
3
Hallo World!!


99
Hallo World!!
100
Hallo World!!

の出力を得られます。

/*-------------------------------------------------------*/
≪繰り返し3≫
 最後に30個のフォルダを一度に作るスクリプトを組んでみましょう。
ファイル名を 'dir30.sc' とします。ファイルの中身は以下

#!/bin/sh
for i in $(seq 1 30)
do
mkdir $i
done

これを作動させると、名前が1-30となっているフォルダができています。

/*-------------------------------------------------------*/
≪まとめ≫
 ここまでの内容を応用することで、単純作業をかなり簡略化できます。
皆さん頑張ってください。

/*-------------------------------------------------------*/
≪執筆後≫
 すごい疲れました。わかりにくい、ここどうなってんだ?、うまくいかない、などの感想待ってます。


次回は
 短期集中連載 第2弾 『Makefile


ならたく

0 件のコメント:

コメントを投稿