如何使用带有可选提示的expect?

2024-01-20

假设我正在尝试为具有三个提示的 test.sh 编写一个 Expect 脚本:prompt1、prompt2、prompt3。

我的代码是这样的:

spawn test.sh
expect "prompt1"
send "pass1"
expect "prompt2"
send "pass2"
expect "prompt3"
send "pass3"

然而,prompt2 只出现一半的时间。如果prompt2没有出现,expect脚本就会中断。如果prompt2没有出现,我该如何编写跳过prompt2的expect代码?

EDIT:

修复了我的代码:

/usr/bin/expect -c '
spawn ./test.sh
expect {
      "prompt1" {
          send "pass1\r"
          exp_continue
      }
      "prompt2" {
          send "pass2\r"
          exp_continue
      }
      "prompt3" {
          send "pass3\r"
          exp_continue
      }
}
interact return
'

这样,脚本的其余部分就会执行并提供输出。


只要你有一个案例,总是预计会击中并且不包括exp_continue在这种情况下,您可以轻松删除重复并处理可选提示:

expect "prompt1"
send "pass1"
expect { 
    "prompt2" { 
        send "pass2"
        exp_continue
    }
    "prompt3" {
        send "pass3"
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用带有可选提示的expect? 的相关文章

  • BASH 中的空函数

    我正在使用 FPM 工具创建 deb 包 此工具在从支持的文件中删除包之前 之后创建 不幸的是FPM生成的bash脚本包含这样的函数 dummy 该脚本退出时出现错误 语法错误 意外 BASH 不允许空函数吗 哪个版本的 bash linu
  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • 捕获并邮寄 bash 脚本错误

    我有一个脚本 每晚在 cron 中运行 为网络上的多个主机备份一些 postgres 数据库 我有一种方法可以通过利用退出状态来收到脚本失败的警报 但它没有告诉我失败的原因 根据以下代码 我如何捕获脚本运行时发生的任何错误 并将其通过电子邮
  • 如何使用 VSCode 调试 Linux 核心转储?

    我故意从我使用 VSCode 编写的 C 应用程序生成核心转储 我不知道如何调试核心转储 有没有人愿意分享这方面的经验 更新 我相信我现在已经可以使用了 我为核心文件创建了第二个调试配置 我需要添加指向生成的转储文件的 coreDumpPa
  • 将 bash 提示符下的当前命令复制到剪贴板

    我想要一个快速的键盘命令序列 将 bash 提示符处的当前命令复制到剪贴板 例如 要将最后一个 bash 命令复制到剪贴板 我会按 up some command sequence 复制它 或者 例如 要在 bash 历史记录中搜索命令 我
  • Grep 搜索带有换行符的字符串

    如何使用 grep 输出下面给出的输入文件中出现的字符串 export to excel 具体来说 如何处理搜索字符串之间发生的换行符 grep 中是否有一个开关可以执行此操作或其他命令 输入文件 文件a txt 等等 导出到优秀 巴拉巴拉
  • 命令中的 Bash 变量扩展[重复]

    这个问题在这里已经有答案了 DATE 1 week ago date date DATE 不起作用 我怎样才能让它发挥作用 我可以做 DATE CMD date date DATE eval DATE CMD 但我不想将整个命令存储在变量中
  • 在 vimrc 中切换匹配

    我的 vimrc 文件中有以下几行 hi ExtraWhitespace cterm NONE ctermbg green ctermfg green guibg green guifg green match ExtraWhitespac
  • 命名互斥体的 Mono 替代方案

    在 Windows NET 上 命名的互斥体可用于同步多个进程 不幸的是 Mono 在 Linux 上不太支持这一点 他们的发行说明 http www mono project com Release Notes Mono 2 8 Shar
  • 如何在 Linux 中向热敏打印机发送 ESC/POS 命令

    我正在尝试在热敏打印机上发送 ESC POS 命令 但每当我发送它们时 热敏打印机都会将它们打印为文本 而不是作为命令执行它们 我在 prn 文件中编写这些命令 每当我执行 lp 命令来打印文件时 这些 prn 文件也会被打印 但作为文本
  • 有没有办法提高linux管道的性能?

    我正在尝试使用 64 位将超高速数据从一个应用程序传输到另一个应用程序CentOS http en wikipedia org wiki CentOS6 我使用以下方法进行了基准测试dd发现阻碍我的是管道而不是程序中的算法 我的目标是达到
  • Python 子进程:无法转义引号

    我知道以前曾问过类似的问题 但它们似乎都是通过重新设计参数的传递方式 即使用列表等 来解决的 但是 我这里有一个问题 因为我没有这个选项 有一个特定的命令行程序 我使用的是 Bash shell 我必须向其传递带引号的字符串 它不能不被引用
  • 通过 Node.js 运行 bash 脚本 - 非法选项 -o pipelinefail

    我正在尝试使用 Node js 执行 bash 脚本child process exec 然而它在文件的第二行爆炸 usr bin env bash set eo pipefail TRACE set x echo we are here
  • 通过 ssh 运行 Bash 脚本

    我正在尝试编写一个 Bash 脚本 它将通过 SSH 连接到计算机并创建一个目录 长期目标有点复杂 但现在我从简单的开始 然而 虽然很简单 但我似乎不太明白 这是我的代码 bin bash ssh T email protected cdn
  • 在 MacOS 上构建需要 net461 的 dotnet SDK 项目的最简单方法

    我有一个 dotnet SDK sln and a build proj with
  • 虚拟内存澄清——大连续内存的分配

    我有一个应用程序 我必须在 Windows 上分配 使用运算符 new 相当大的内存空间 数百 MB 该应用程序是 32 位 我们现在不使用 64 位 即使在 64 位系统上也是如此 我启用了 LARGEADDRESSAWARE 链接器选项
  • Xcode 方案预操作脚本未运行

    点击构建 构建日志中不会打印任何内容 是什么赋予了 Xcode 版本 8 2 1 8C1002 预操作发生在构建之前 因此输出不会进入构建日志 而是进入 stdErr 您可以将输出复制到文件中 exec gt PROJECT DIR pre
  • 打印 STDOUT/STDERR 并将它们写入 Bash 中的文件?

    有没有办法让 Bash 将 STDOUT STDERR 重定向到文件 但仍然将它们打印到终端 这会将 STDOUT 和 STDERR 重定向到同一个文件 some command 2 gt 1 tee file log Example to
  • 在 Linux 服务器上创建和编辑 MS-Word 文档?

    希望开发处理文档的服务器端应用程序 源文档大多是MS Word 2003 2007 即MS版本的Docx 希望服务器应用程序能够在linux或windows上运行 想知道在linux下读写MS Word文件最好的工具或库是什么 兼容性是最重
  • Linux 上的“软/硬 nofile”是什么意思

    当我尝试在RedHat EL5上安装软件时 我得到了错误 软 硬nofile的期望值是4096 而默认值是1024 我设法增加了这个数字 但我不知道参数是什么 他们指的是软链接和硬链接吗 我改变的方法是 a 修改 etc security

随机推荐

  • PHP:最安全(可解密)的加密方法?

    在 PHP 中 可解密的 加密算法是最安全的一种吗 我的意思是MD5无法解密 对吗 我找到了带有 mcrypt 的完整工作类 然后再次用 base64 编码 它可以加密并解密回来 示例 mcrypt 加密 function encrypt
  • 如何避免 Jenkins 多分支管道作业自行触发

    我希望我的 Jenkins 多分支管道作业能够避免自行触发 该作业进行提交 因为它会增加版本文件并将其签入源代码管理 这会导致无限循环 在正常工作中我可以遵循这些说明 https liviutudor com 2015 12 09 jenk
  • Android实时数据库抛出错误:客户端已离线但实际上并没有

    该应用程序执行简单的注册 使用 FirebaseAuth FirebaseUI 和 Google Sign In 认证时成功地 我拿firebaseUser userId并使用它从实时数据库中获取用户配置文件 示例位置 users user
  • 使用 TFS 2010“构建”经典 ASP

    我使用 TFS 2010 进行源代码控制和持续集成 除其他外 我有一个我维护的经典 ASP 应用程序 我想将其合并到持续集成构建中 但是 我必须在构建定义中提供 要构建的项目 由于经典 ASP 没有与之关联的解决方案或项目 因此我仍然可以使
  • Struts2 ValueStack如何处理多个请求

    我明白ValueStack在 Struts2 中引入 Struts1 模型的另一项变化现在是一个新的ActionObject为每个请求实例化 所以我们可以定义实例变量而不用担心多线程问题 拦截器和 JSP 访问实例变量的方式ActionOb
  • 如何抑制 ggplot2 图中的垂直网格线?

    我正在构建一个条形图 其中条形足以作为水平 x 放置的指示 因此我想避免绘制多余的垂直网格线 我了解如何在 opts 中设置次要和主要网格线的样式 但我一生都无法弄清楚如何仅抑制垂直网格线 library ggplot2 data lt d
  • Xamarin.Android - 本机代码编译是否会使逆向工程变得更加困难?

    我们正在考虑将 C NET 应用程序移植到 Android 我已经开始阅读有关 Xamarin Android 和 Mono 框架的内容 我刚刚开始Android 开发 我注意到主要http xamarin com android http
  • 在 Scikit-learn 中使用 Smote 和 Gridsearchcv

    我正在处理不平衡的数据集 并希望使用 scikit 的 gridsearchcv 进行网格搜索来调整模型的参数 为了对数据进行过采样 我想使用 SMOTE 并且我知道我可以将其作为管道的一个阶段并将其传递给 gridsearchcv 我担心
  • 当“下拉菜单值更改”时重新加载 d3 图表

    当用户在下拉菜单中选择一个项目以及与该项目对应的数据时 我试图重新加载 d3 js 折线图 我的菜单是股票市场价值列表 YHOO FB 对于其中每一个 我都有一个包含数据的 JSON 文件 该图本身正在发挥作用 我将代码放在 JSFiddl
  • 在 Active Admin 中禁用 CSV 下载

    我正在使用 Active Admin gem 我想隐藏或删除每个模型索引页面上的链接 允许用户下载 CSV XML 或 JSON 格式的数据 有什么办法可以做到这一点吗 现在有一个选项 download links在索引方法上 因此您可以根
  • 测试用例中缺少 ROLLBACK 会导致多数据库 django 应用程序中唯一约束冲突

    我刚刚开始使用工厂男孩 https github com dnerdy factory boy用于测试工厂的 django 库 并且存在重复键约束违规问题 测试成员程序 py from datetime import date timede
  • 如何从 aws 实例内部检测其状态?

    我在 EC2 中有自动缩放组 我想在实例终止时检测实例的状态 以便我可以在实例终止之前开始导出日志文件 我知道实现此目的的一种方法是使用自动缩放生命周期挂钩 但根据我的理解 我必须使用外部监视器 然后该监视器必须 ssh 到实例并导出日志文
  • 从 select 语句 mysql 调用用户定义的存储过程

    我试图从 select 语句调用用户定义的存储过程 但它给了我一个错误 但是 当我调用系统过程时 它工作得很好 有没有办法从 select 语句调用用户定义的过程 这是针对mysql的 SELECT ID email FROM user P
  • 在nodejs日期对象中设置日期将日期显示为不同的值

    当我使用下面的语句设置日期对象时 输出在 NodeJS 中显示不同 你能帮我理解为什么会这样吗 以及我需要如何传递来打印正确的值 var date1 new Date 2017 01 01 var date2 new Date 2017 0
  • Charts.js 直线 - 我找不到解决方案

    所以我使用charts jshttp www chartjs org http www chartjs org 我试图使两个点之间的线是直的而不是弯曲的 没有明显的原因 现在看起来像那样https i stack imgur com rK8
  • 我是否应该使用“self”来定义我不需要从外部访问的实例化类的变量/对象?

    我不是一个完全的初学者 但相当陌生Python 今天在做一个项目时 我只是有一个想法 并想知道 self 我过去读过一段时间 但我仍然无法弄清楚它是否总是必要的 我的问题仅涉及类的实例和实例参数 变量 这个问题与影响所有实例的类变量无关 E
  • 更新复杂 JTable、TableModel 等的正确方法

    我的 GUI 显示了我的车辆park 以及我想要设置的车辆可用的在两个不同的车辆表 扩展 JTable 的类 对于可用的情况 我希望可以从agent 第三方软件 这两个表都显示了行中车辆的描述 为此我创建了车辆表模型 and Vehicle
  • 使用 yum 安装 pgAdmin4

    是否已经有一种方法可以安装 pgAdmin IV Beta 桌面运行时 例如与百胜 我在官网上找到了Python Wheel的下载链接 但是没有yum的提示 桌面运行时似乎还没有可用 pgAdmin 4 已包含在官方中PostgreSQL
  • 更改购物车列的顺序而不覆盖 Woocommerce 中的模板文件

    是否有解决方案可以更改购物车列的顺序 而无需将文件复制到我自己的模板文件夹中 原因是 我不想覆盖这么重要的模板文件 不幸的是 订单被硬编码为文件中的表格cart php并且不在函数内部 在这种情况下 是否有任何 干净 的方法来更改列的顺序
  • 如何使用带有可选提示的expect?

    假设我正在尝试为具有三个提示的 test sh 编写一个 Expect 脚本 prompt1 prompt2 prompt3 我的代码是这样的 spawn test sh expect prompt1 send pass1 expect p