Linux shell:我的`expect`脚本无法按预期工作

时间:2017-06-02 01:42:56

标签: linux shell input expect

我有一个像下面这样的简单脚本,从命令行读取2个数字并将它们加在一起:

$cat runexp.sh
#!/bin/bash
echo "read 1st number"
read n1
echo "read 2nd number"
read n2
expr $n1 + $n2

它运行,没问题。然后我写了一个如下的期望脚本:

$cat autorun.sh
#!/usr/bin/expect
spawn ./runexp.sh
expect 'read 1st number' {send "1"}
expect 'read 2nd number' {send "2"}
interact

似乎仍然提示从命令行读取,经过相当长的一段时间,它结束了。

$./autorun.sh
spawn ./runexp.sh
read 1st number
5
4
3
5
4
3
read 2nd number
9

我哪里弄错了? 感谢。

1 个答案:

答案 0 :(得分:2)

你也必须发送新行,否则它只会等待(至少等到默认超时,我相信是10秒)。

此外,expect不是封闭字符串的单引号的粉丝。就像Tcl(来自它),它想要双引号或括号。这很好用:

#!/usr/bin/expect

spawn ./runexp.sh

expect "read 1st number" {send "1\n"}
expect {read 2nd number} {send "2\n"}

interact