hoge diary - September 7, 2004

[Linux] seq コマンドの存在を知る

卒研でシミュレーションをやってると,パラメータの変更をして再度実験,という作業を何度も行います.こんなとき私はシェルスクリプトを書くわけです.

例えば,「パラメータを 0 から 10 まで 1 ずつ増やしてコマンド hoge を実行」という場合に,私が今までに書くスクリプトは次のようなものです.

#!/bin/bash
p=0
while [ $p -le 10 ]; do
    hoge $p;
    p=`expr $p + 1`;
done

さて,これだけでも十分面倒でしたが,これが浮動小数点(例えば,0.0 から 1.0 まで 0.1 ずつ増加)になると... 私は次のように書いていました.

#!/bin/bash
p=0.0
c=0
while [ $c -le 10 ]; do
    hoge $p;
    p=`echo "$p + 0.1" | bc -l | sed 's/^\./0\./'`
    c=`expr $c + 1`;
done

expr コマンドと [ (test) コマンドは整数の比較しかできないので,整数のループカウンタ c を別途用意しています.そして,浮動小数点の加算は bc コマンドに行わせます.さらに,bc コマンドは計算結果の整数部が 0 の場合に ".3" といった出力をするので,sed コマンドを用いて "0.3" になるよう,頭に 0 を追加しています.

私が悲惨なシェルスクリプトを書いていたのは分かりましたね? それでは本題です.

こんな努力をしなくてすむコマンドを見つけてしまいました.seq コマンドです.

次のように入力するだけで,簡単に数列が生成できます.

% seq 0 1 10
0
1
2
3
4
5
6
7
8
9
10
%

嬉しいことに,浮動小数点数にも対応しています.

% seq 0 0.1 1.0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
%

あとはこれを for 文に食わせるだけです! これで私は変なシェルスクリプトを書かずに済みます.

コメント

名前(何でも可):

テキスト(http:// を含む内容は投稿できません):

トラックバック

トラックバック URI: https://www.pakunet.jp/hoge/trackback/2004090701

トラックバックはありません.


Valid XHTML 1.1! Valid CSS!
© 2004-2009 ぱくちゃん.
Last modified: Thu Nov 01 01:16:18 JST 2007