Linux 期待换行

Linux expect newline

我有一个自定义包,我想使用 expect 在我的 docker 中自动安装。

程序包要求我做的第一件事是按 Enter 键继续,然后打印另外 2 行空行,然后等待输入。

我期望的脚本:

#!/usr/bin/expect -f

set timeout -1

spawn ./install

expect "\n"
send -- "\n"

但是正如您在图像中看到的那样,它只是运行安装程序并退出。

我尝试删除 expect "\n",因此只有 send -- "\n" 会执行,但现在即使安装消息也不会出现(在发送前尝试使用 set timeout 1000,但也没有用)

有什么想法吗?

P.S :如果有人想尝试一下,这是一个 link 包:

https://www.bayometric.com/downloads/digital-persona/DP_UareU_Linux223_20140429.2.zip

(安装程序在 DP-UareU-RTE-2.2.3-1 中。20140429_1533.tar.gz)

expect "\n" 完全匹配换行符,我认为这不是您的程序发送的内容。

要等待 Shell 提示,您可以使用 expect "%"expect "*" 来匹配任何内容。

如果您需要确保处理正确的提示,您可以使用 expect "*Linux Installation*".

也不要为 enter 键发送 \n 而是 \r :

#!/usr/bin/expect

spawn ./install

expect "*Linux Installation*"
send "\r"

expect eof

请注意,glob pattern matching but you can also use the -re flag for regular expression 匹配的默认标志是 -gl