Expect 工具使用指南:从基础到高级应用
1. expect_tty 与 send_tty 命令
1.1 expect_tty 命令的局限性
使用 expect_tty 存在一定的缺点,它无法通过 shell 进行重定向。虽然这看似与该命令的设计初衷相悖,但在某些情况下,我们可能希望强制命令从文件中获取输入,例如在测试 more 命令时。由于 more 命令的特性,它无法通过 shell 实现自动化操作(不过可以使用 Expect 实现自动化)。因此,不应随意使用 expect_tty,因为它生成的程序在管道中通常表现不佳,难以作为 UNIX 风格小型协同工具的构建块。
1.2 send_tty 命令
send_tty 命令与 expect_tty 类似,它将输出发送到屏幕,且该输出无法被 shell 重定向。send_tty 与 expect_tty 具有相同的优缺点。
1.3 工作原理
expect_tty 和 send_tty 通过一个名为 /dev/tty 的特殊文件进行通信。Expect 是少数能够重定向与通过 /dev/tty 通信的程序进行通信的工具之一。当程序由 Expect 启动时,其所有输入(/dev/tty 和未重定向的标准输入)会合并为一个输入,send 命令可以向该输入写入数据;所有输出(/dev/tty 和任何未重定向的标准输出或标准错误)会合并为一个输出,expect 命令可以从该输出读取数据。这使得 Expect 能够像真人一样与进程进行读写操作,只要人类可以控制某个程序,那么 Expect 也可以控制该程序,这就是 Expect 的强大之处。
超级会员免费看
订阅专栏 解锁全文
2282

被折叠的 条评论
为什么被折叠?



