期望spawn没有执行

0 tcl expect spawn

您好,我有以下名为 a.exp 的期望脚本

#!/usr/bin/expect
spawn cat a.txt
Run Code Online (Sandbox Code Playgroud)

其中 a.txt 包含以下单行字符串文本

你好世界

接下来我使用以下命令使其可执行

chmod +x a.exp
Run Code Online (Sandbox Code Playgroud)

现在,我按如下方式运行它

./a.exp
Run Code Online (Sandbox Code Playgroud)

我得到的输出如下

spawn cat a.txt
Run Code Online (Sandbox Code Playgroud)

另一方面,如果我使用以下脚本

puts [exec cat a.txt]
Run Code Online (Sandbox Code Playgroud)

代替

spawn cat a.txt
Run Code Online (Sandbox Code Playgroud)

它确实打印 a.txt 文件的内容。请问你能帮我使用spawn来执行它吗?谢谢!

Don*_*ows 5

您还没有告诉它从生成的程序中读取任何内容。如果我使用这个版本,a.exp它会得到我认为正确的输出:

#!/usr/bin/expect
spawn cat a.txt
expect "\n";        # Wait for a newline
Run Code Online (Sandbox Code Playgroud)

如果您真的只是想提取其他程序写出的所有内容而不发送任何返回内容,则可以使用最后一行来等待文件结尾:

expect eof
Run Code Online (Sandbox Code Playgroud)

当我测试时,两者都会产生以下输出:

生成猫a.txt
你好世界