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

如何在Bash中用Expect自动化带空格键选择的DIALOG交互

解决方案

你的问题核心是发送空格的时机不对,固定sleep 1无法保证对话框完全加载,且没有匹配对话框的特征文本就发送输入,导致空格没被正确接收。以下是修正后的实现:

修正后的脚本

#!/bin/bash
/usr/bin/expect << 'HEREDOC'
spawn /opt/eri_sn/sbin/foo.bar

# 等待对话框出现的特征文本(替换成你实际界面中出现的提示,比如"Select option with SPACE")
expect "Press SPACE to select"

# 发送空格选中目标选项
send -- " "

# 等待确认提示(替换成实际的确认文本,比如"Press ENTER to proceed")
expect "Press ENTER to continue"

# 发送回车确认
send -- "\r"

expect eof
HEREDOC

关键调整说明

  1. 替换固定sleep为特征文本匹配
    系统负载波动会导致sleep 1不够用,用expect "特征文本"可以精准等待对话框加载完成后再发送输入,避免时机过早。

  2. 正确发送空格
    用send -- " "或send -- { }都能发送空格,确保没有多余转义字符。如果需要选中多个选项,可重复写send -- " "。

  3. 调试方法
    如果你不知道对话框的特征文本,用调试模式查看交互过程:

    /usr/bin/expect -d << 'HEREDOC'
    spawn /opt/eri_sn/sbin/foo.bar
    expect eof
    HEREDOC
    

    运行后会输出详细的接收日志,从中找到对话框出现时的关键字符串,替换到脚本的expect语句中即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 19:06:00