您希望第一个示例做什么?你以一个
interact
语句,将控制台连接到生成的进程中的stdin/stdout。这个
redis-server
程序不是交互式的:它不接受任何控制台输入。当你跑步时
ReDIS服务器
,它将达到…
1135:M 18 Nov 13:59:51.634 * Ready to accept connections
…然后它停止,等待redis客户机连接并对其进行操作。另外,请注意,我使用的Redis版本以结尾
Ready to accept connections
而不是
The server is now ready to accept connections
,所以我将在下面的示例中使用它。
我们可以添加一个
puts
命令到Expect脚本,以查看它不是
在任何地方都会被卡住。如果我运行以下程序:
#!/usr/bin/expect -f
spawn redis-server
expect "Ready to accept connections"
puts "redis is running"
interact
我得到输出:
spawn redis-server
1282:C 18 Nov 14:03:33.123 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1282:C 18 Nov 14:03:33.123 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=1282, just started
[...]
1282:M 18 Nov 14:03:33.124 * Ready to accept connections
redis is running
所以我们可以看到它不会被卡在
spawn
语句,
甚至不在
expect
语句。
你的问题不清楚的是你为什么要使用
期待
在这种情况下,因为
ReDIS服务器
不是交互式程序
不会产生任何需要自动化的提示。