Exception 条件为'时的异常操作;t遇见
我正在尝试生成一个except脚本,该脚本仅在命令执行时不存在字符串时才会执行操作:示例:Exception 条件为'时的异常操作;t遇见,exception,tcl,expect,Exception,Tcl,Expect,我正在尝试生成一个except脚本,该脚本仅在命令执行时不存在字符串时才会执行操作:示例: send -- "sys set -nd\r" expect "showdebugcommands" {} "\n$PROMPT" {send -- "sys set showdebugcommands 1\r"} 我想做的是:如果cmd输出中存在“showdebugcommands”,则不执行任何操作,但如果不存在,则执行命令“sys set showdebugcommands 1” 我如何使用exp
send -- "sys set -nd\r"
expect "showdebugcommands" {} "\n$PROMPT" {send -- "sys set showdebugcommands 1\r"}
我想做的是:如果cmd输出中存在“showdebugcommands”,则不执行任何操作,但如果不存在,则执行命令“sys set showdebugcommands 1”
我如何使用expect实现这一点 试试这个
set seen false
expect {
"showdebugcommands" {set seen true; exp_continue}
"\n$PROMPT"
}
if { ! $seen} {
send -- "sys set showdebugcommands 1\r"
}
一种方法是将
expect
嵌套在expect
中。这是完全合法的
send -- "sys set -nd\r"
expect {
"showdebugcommands" {
expect "\n$PROMPT"
}
"\n$PROMPT" {
send -- "sys set showdebugcommands 1\r"
expect "\n$PROMPT"
}
}
这样做的目的是在看到您想要的东西后,将活动返回到已知状态(提示显示)。从代码单元的角度考虑总是一个好主意,代码单元可以将事情恢复到已知状态。(正因为如此,我还在内部的
发送
之后添加了另一个expect
提示;让我们回到外部expect
末尾的“我刚刚看到提示”状态,因为这是最不疯狂的选项。)谢谢glenn!我不知道为什么,在执行cmd后出现“showdebugcommands”字时,IF语句没有触发。我可能会错过什么?这不是你想要的吗?你说过如果看到这个词你什么都不想做。那是我的错。资本化。。。谢谢你的帮助。工作得很好。