我有一个期望脚本正在运行;它包含以下几行:
expect "\[Y\]\> "
send "n\r"
我正在与之交互的OS发生了变化,我现在有一个混合的盒子环境。在我要处理的问题上,有些现在带有“ [Y]>”,有些带有“ [1]>”。
我尝试将代码更改为:
expect {
"\[Y\]\> " { send "n\r";exp_continue }
"\[1\]\> " { send "2\r";exp_continue }
}
但是,在调试中运行,我看到:
"Choose the password option:
1. Mask passwords
2. Plain passphrases
[1]>
expect: does "s...ses\r\n[1]> " (spawn_id exp5) match glob pattern "[Y]> "? no
"[1]> "? no
expect: timed out"
我不明白为什么在引入“ else”语句之前匹配“ [Y]>”时,对于“ [Y]>”或“ [1]>”而言,修改后的代码为何不起作用
答案 0 :(得分:1)
问题在于转义Tcl
专用的方括号。
# Using braces for pattern
expect {
{\[Y]>} {puts Y}
{\[1]>} { puts 1}
}
# or
# Using double quotes
expect {
"\\\[Y]>" {puts Y}
"\\\[1]>" { puts 1}
}
我们不必逃脱右括号]
和符号>