Develop and Download Open Source Software

Back to Forum List
Back to this Forum

RSS feed of this forum [RSS]RSS for this Forum
RSS feed of this forum thread [RSS]RSS for this Thread

Discussion Forums: Open Discussion


Forum posts/thread author names displayed like this are non-Login Users' posts (Post from non SourceForge.JP user).

Subject:[#52812] 実行コマンドの結果解析

Date:2010-09-08 19:48By: Yutaka Hirata (yutakapon)
ちょっと業務でハマっていたので、教えてください。
やりたいことは以下のとおりです。

 目的:コマンドを実行して、その実行結果(一行)を受信し、その内容を解析する。
 コマンド名: 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 がいつまでも返ってこない(永遠に待っている)ことがあります。


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

Post a message to this thread:
(follow up to message [#52812])

You could post if you were [logged in]


SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.