linux - Expect 交互效果很好,但不是来自文件

标签 linux bash ubuntu tcl expect

当我像这样交互式地使用 expect 时效果很好:

root@vagrantup:/home/vagrant> expect -i
expect1.1> spawn screen -x
spawn screen -x
3195
expect1.2> send "ls\n"
expect1.3> exit

但是在文件中使用相同的命令:

spawn screen -x
send "ls\n"
exit

仅在某些时候有效,例如。每次执行文件时的 1/10 次。这真的很奇怪。

我用这个命令执行文件:

expect -f Expectfile

我还测试了这些:

expect -b Expectfile
expect Expectfile

但我得到了同样的错误。

什么也没说。另一个屏幕(因为我使用的是“屏幕”命令)只在某个时候响应。谁知道为什么?

最佳答案

我希望你使用 ls 来代表其他东西,因为如果你只想要一个本地文件列表,你最好使用 glob 命令。当然,您实际上可能正在做类似的事情,也可以使用 screen -x,但现在让我觉得有点过于复杂了。

可能的失败(虽然由于缺乏证据,我在黑暗中拍摄)可能是使用虚拟终端的各种事物之间的交互(期望和屏幕都这样做,而且没有那么多虚拟终端可用系统-wide)或由于没有足够的时间重新建立 session 连接而导致的某种计时问题。 (不过 10 次中有 9 次失败?那太多了。)如果是计时问题,在 500 之后插入一个 会有所帮助。如果是终端数量,那你就有问题了;也许可以使用 lsof 之类的工具来发现这一点,但是有很多事件部件,我不知道是什么地方出了问题。

关于linux - Expect 交互效果很好,但不是来自文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3747040/

相关文章:

linux - 遍历文件并解析占位符变量

apache - 403 错误 - Apache VirtualHost - Ubuntu 22.04

php - FirePHP 初学者问题

linux - 为什么 iconv 不能从 utf-8 转换为 iso-8859-1

linux - 使用 locate、pipe 和 grep 查找名称中包含特定关键字的文件

bash - 使用tee和jq写入txt和json日志文件

objective-c - 我将如何在 Ubuntu 上使用 Objective-C ParseKit 编译项目?

sql - 如何修复 psql ubuntu 中 "psql"处或附近的语法错误

php - 通过 PHP 的 cURL 上传文件到 FTP,错误是因为密码包含 '<' 字符

linux - 获取 tmux 中其他 Pane 的标准输入