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
。
我有一个自定义包,我想使用 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
。