私は数時間検索し、いくつかのアプローチを試しました。これは機能すると予想されるコードの断片です。
foreach line [split $expect_out(buffer) \r\n] {
if {[string match {*word*} $line]} {
send_user "$line\r\n"
set acctnum [exec echo $line | cut -d\. -f1]
send_user "$acctnum\n\r"
}
}
出力は次のとおりです
2. word
2
アスタリスクのない「単語」と両端にアスタリスクのある「単語」は機能しません。コマンドラインで提供される変数でなければなりません。変数で動作する組み合わせが見つかりませんでした。
動作するように提案してください。
答え1
私はその中で答えを見つけました。Expectスクリプトで文字列を部分文字列と一致させます。。以前はこの質問を見たことがありますが、注意深く読んでいないようです。答えは中括弧を二重引用符で置き換えることです。
foreach line [split $expect_out(buffer) \r\n] {
if {[string match "*$varname*" $line]} {
send_user "$line\r\n"
set acctnum [exec echo $line | cut -d\. -f1]
send_user "$acctnum\n\r"
}
}