不满足条件时的异常动作
Exception action when condition isn't met
我正在尝试制作一个 except 脚本,该脚本仅在命令执行中不存在字符串时才会采取行动:示例:
send -- "sys set -nd\r"
expect "showdebugcommands" {} "\n$PROMPT" {send -- "sys set showdebugcommands 1\r"}
我想做的是:如果 "showdebugcommands" 出现在 cmd 输出中,则不执行任何操作,但如果不存在,则执行命令 "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"
}
}
目的是在看到你想要的东西后,将 activity 恢复到已知状态(提示显示)。根据将事物恢复到已知状态的代码单元来思考总是一个好主意。 (因此,我在内层send
之后又加了一个提示expect
;让我们把它全部恢复到外层末尾“我刚看到一个提示”的状态expect
因为这是最不疯狂的选择。)
我正在尝试制作一个 except 脚本,该脚本仅在命令执行中不存在字符串时才会采取行动:示例:
send -- "sys set -nd\r"
expect "showdebugcommands" {} "\n$PROMPT" {send -- "sys set showdebugcommands 1\r"}
我想做的是:如果 "showdebugcommands" 出现在 cmd 输出中,则不执行任何操作,但如果不存在,则执行命令 "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"
}
}
目的是在看到你想要的东西后,将 activity 恢复到已知状态(提示显示)。根据将事物恢复到已知状态的代码单元来思考总是一个好主意。 (因此,我在内层send
之后又加了一个提示expect
;让我们把它全部恢复到外层末尾“我刚看到一个提示”的状态expect
因为这是最不疯狂的选择。)