以下のような期待応答にロードされた変数があるかどうかを判断する簡単な方法があるかどうかを調べています。($sb が切り替わっていることに注意してください)
expect {
"some text\rsome text = $sb\rsome text = $sb\r# " {
id $sb
version
id $sb
thermometer $eFile
finish $eFile
}
"some text\rsome text = $sb\r# " {
id $sb
update
enum 2 $sb $eFile
}
}
ご想像のとおり、これはスクリプトの一部に過ぎず、if 内の呼び出しはすべて proc です。応答のバリエーションを処理するために十分な応答を手動で作成する必要があるよりも、これに似たものを使用できるようにしたいと考えています。結果は次のようになりますが、追跡するのが長くなり、面倒なだけです。
expect {
"some text\rsome text = 2\rsome text = 2\r# " {
if { $sb == 2 } {
id $sb
version
id $sb
thermometer $eFile
finish $eFile
} else {
assign $sb $eFile
enum 1 $sb $eFile
}
}
"some text\rsome text = 3\r# " {
if { $sb == 3 } {
id $sb
update
enum 2 $sb $eFile
} else {
assign $sb $eFile
enum 1 $sb $eFile
}
}
}
「一部のテキスト」応答は同じであるため、控えめに言ってもトリムによるフィルタリングは興味深いものです。私はその大部分を構築しましたが、できれば避けたいと思います。また、2/3 の表示では切り替えることができるため、変数が 2 つの応答は 3 になり、変数が 1 つの応答も 2 になる可能性があるため、これが急速に大きくなる可能性があることは明らかです。