我有以下 bash 脚本(script.sh):
#!/bin/bash
read -p "Remove? (y|n): " answer
echo "You answered '$answer'."
我想用expect来驱动它。我有以下脚本(expect.exp,在同一目录中):
#!/usr/bin/expect -f
set timeout -1
spawn -noecho ./script.sh
expect "^Remove"
send "y\r"
但它没有按预期工作(双关语)。结果是:
~/Playground$ ./expect.exp
Remove? (y|n): ~/Playground$
因此,expect 脚本在第一个 'expect "^Remove"' 行以某种方式失败并立即退出,并且 script.sh 的其余部分不执行。我在这里做错了什么?我一直在关注在线找到的基本教程(带有 ftp 示例的教程)。我在 Kubuntu 12.10 上使用 expect 5.45。
编辑 因此,如果我在最后添加“交互”或“期望 eof”,它会改变。但我不知道会发生什么以及为什么。有什么帮助吗?