2008年11月8日土曜日

シェルスクリプトの威力

ども。たです。

昨日、いいかげん Sim. を流す前の準備をいちいち手で
行うのが面倒になったので、仕事中時間を見つけて、
せっせとスクリプト作り。

一応たたき台はあったので、それを自分好みに編集した感じ。
作業としては、フォルダを掘って、そこに入り、さらにフォルダを掘り、
そこに移動して、ネットリストをコピーして来て、それを開き、
電源電圧や温度、Tr のコーナなどを編集し、Sim. を流して、
そのフォルダを抜ける。

その作業を延々と全条件繰り返す。
毎回毎回同じ作業をするのが面倒だというのもあったが、
何より、単純作業を繰り返すことによるヒューマンエラー
の回避が目的だったりもする。

で、半日ほど掛けてスクリプトを作る。もともとあったたたき台的
ファイルは、条件が決め打ちだったので、電源電圧や温度範囲
が変わっても、簡単な編集で済むようにと、全てをパラメータで
宣言し、ものによっては、実行時に指定できるよう @ARGV[*]
や、$* で宣言。

そして、作り終えたところで、テスト。
コマンド "ポン" でウン十条件が自動的に流れて行く様は圧巻。
「スクリプトすげぇ (°O° ;)
今まで 20 分から 30 分かけてやっていたような作業が、
それこそ 10 秒程度で処理されていく。
しかも、機械の行う作業だから、何らかのエラーで落ちることは
あっても、間違えた条件のまま、それっぽく流れきることもない。
これは良い!こんな便利なものを何で今の今まで知らなかったんだ orz

ただここで問題が発生。テストはスケマのみのネットリストだったから
良かったものの、BA のファイルになると、データ量が多すぎて、
C シェルスクリプトの "sed" コマンドでは、全データを抜きだせず、
今から最も活躍するであろう BA では、このスクリプトは使えないことが判明。

意味ねぇーぢゃん !!!

どうやら、"sed" では、8192 文字までしか抜き出せないらしい。
それじゃ、文字情報のみで 40MB 近い BA のネットリストは
抜き出せるわきゃない。。。
よって、ネットリストの置換は、perl で行うことに決定。
その perl ファイルを本日起こし、それをシェルスクリプトに
食わせ、Sim. の自動実行を遂行可能に。

これで良し。。。なんて思ったのも束の間。
40MB のファイルともなると、自動実行のコピーでは、
2 本に 1 本の割合で、ミスることが発覚。
「結局半分は、手でやるのかよー。」とか軽く辟易していたら、
「リモートディスクに書きに行くから、ミスるんじゃない?」
との神からのご助言w

「ってことは。。。」ということで、local ディスクに勝手にフォルダを
掘って、そこに保存するようにしたところ、一度もしくることなく
スクリプト実行完了!

これで、全体に関しては、コマンド "ポン" で自動実行が可能
になったわけだが、結果まとめはまだまだマニュアル操作なので、
次は、それだな。

ってことで、昨日、今日で、効率という新しい武器を手に入れた
って話でしたw

そんなこんなで。
では。

0 件のコメント: