話題(スレッド): 実行コマンドの結果解析

実行コマンドの結果解析 (2010-09-08 19:48, yutakapon, #52812)

ちょっと業務でハマっていたので、教えてください。
やりたいことは以下のとおりです。

 目的:コマンドを実行して、その実行結果(一行)を受信し、その内容を解析する。
 コマンド名: dotest
 実行結果例: 0000: 01020304 06070809 ; foo

ようするに、"dotest"プログラムを実行して、その結果が1つの行で返ってくるので、その内容を加工したい、ということです。そのためには、実行結果をいったんバッファに格納する必要があります。

こうした用途を達成したい場合、どのようにマクロを記述するのが適切でしょうか?

1.recvlnを使う

flushrecv
sendln 'dotest'
recvln
messagebox inputstr 'recvln'

 たとえば、recvlnを使い、上記のように書くと、おおむねは期待通りに動作するのですが、まれに受信に失敗することがあります。recvlnは改行コード(0x0a)で判断するので、sendlnでコマンドを送り、コマンド名がエコーバックされたときの改行を拾う場合があるのかと思っています。

2.waitregexを使う

sendln 'dotest'
waitregex '0000: .*\n'
messagebox inputstr 'recvln'

 正規表現を使って、コマンド投入後、一行データを待つというふうにすると、これもだいたい動くのですが、まれに waitregex がいつまでも返ってこない(永遠に待っている)ことがあります。


もっとスマートなやりかたがあれば、ご教示願います。

メッセージ #52812 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする