私はCLIからのいくつかの出力を解析し、それを反復しようとしています。出力は次のようなものです。これらのオブジェクトでさらに多くのことをするために各IDを繰り返し処理したいと思います。いくつかの期待される行を反復する方法
OVM>リストServerPool
コマンド:リストServerPool
ステータス:成功
データ:
ID:123456789名:プール1
ID:987654321名:POOL2
私がしようとしていました次のコードが何らかの理由で2番目のIDを印刷した後にハングします。私はそれがexp_continueと関係があると思うが、私はあまりにもうまくいくとは理解していない。また、私は、2つのidだけを持つ場合には、この簡単な解決策をやっています。なぜなら、一般化して一度にいくつかの行を取得して、後でそれらを反復し、より多くのコマンドを送信する方法がわからないからです。
2番目のIDが印刷された後に出口を追加しようとしましたが、役に立たなかったため、予想し続けるようにしてそこにハングアップするようです。私はその時点でexp_continueをどのように取り消すのか分かりません。
expect "OVM> " {
send "list ServerPool\r"
expect {
-re " id:(.*?) (.*?)\n\r" {
send_user "$expect_out(1,string)\n"; exp_continue
}
-re " id:(.*?) (.*?)\n\r" {
send_user "\n$expect_out(1,string)\n";
}
}
}
send "exit\r"
expect eof
は、なぜあなたは二度同じ正規表現を持っているのですか?期待どおりのルーチンから抜け出すためにタイムアウトを追加することができます。 – Ashish
IDは、一度に1つずつ、または一度に1つずつ(最初のIDを受信したコマンド・ポストを送信した後)のどちらですか? – Sharad
IDのリストが一度に来ます。ご存知のように、私が1つだけを使用すると、最初のIDだけが必要になります。配列のようなIDのリストを取得し、後でループで使用して、必要な他のコマンドを送信する方法を知りたい。 – Nocturn