You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用expect工具时未匹配到目标内容如何发送默认命令

expect常见问题解答

1. 未匹配到内容时能否发送默认命令

可以。expect提供了default匹配分支,当所有预设的匹配规则都没有命中时,就会自动触发该分支的逻辑,你可以在该分支内执行任意自定义操作,包括发送命令、打印日志等。

2. 匹配到目标内容前持续发送回车的实现

你给出的示例代码只能触发一次回车发送,因为default分支执行完成后,整个expect语句会直接退出,不会继续监听终端输出。要实现持续匹配的效果,需要在default分支末尾添加exp_continue命令,该命令会让expect执行完当前分支逻辑后,重新回到当前expect块继续监听匹配,不会退出。

正确实现代码如下:

set timeout 60

expect {
  timeout {
    puts "Failed to find foo"
    exit 1
  }

  "foo" {
    exit
  }

  default {
    send "\r"
    # 可选:添加短休眠避免发送过于频繁
    sleep 0.1
    exp_continue
  }
}

说明:

  • 全局超时时间设置为60秒,60秒内始终未匹配到foo字符串就会触发超时逻辑,输出报错并退出
  • 每次未匹配到目标内容时都会发送一次回车,之后自动回到expect监听逻辑,直到匹配到foo或者触发超时

内容的提问来源于stack exchange,提问作者dranobob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:36:11