我正在学习如何使用linux命令-expect followingthis tutorial

#!/usr/bin/expect

set timeout 20

spawn "./addition.pl"

expect "Enter the number1 :" { send "12\r" }
expect "Enter the number2 :" { send "23\r" }

interact

这里有人能解释一下下面的命令是做什么的吗?
spawn "./addition.pl"

顺便说一下,我找不到任何名为“../additon.pl”的文件,因此无法成功运行该示例。
我不知道Perl是如何编写的,但我想脚本(正如jvperrin提到的,它可以是任何语言)应该从标准输入中读取并将它们相加。
我使用python并试图编写adder.py。
#!/usr/bin/python
import sys
print int(sys.argv[1]) + int(sys.argv[2])

但是当我改变了spawn“../add.py”时它仍然不起作用…
错误如下:
Traceback (most recent call last):
  File "./add.py", line 3, in <module>
    print int(sys.argv[1]) + int(sys.argv[2])
IndexError: list index out of range
expect: spawn id exp7 not open
    while executing
"expect "Enter the number2 :" { send "23\r" }"
    (file "./test" line 8)

最佳答案

spawn实际上将启动一个命令,因此您可以以任何方式使用它。例如,可以将其用作spawn "cd .."spawn "ssh user@localhost"而不是spawn "./addition.pl"
在本例中,spawn指令在addition.pl中启动一个交互式perl程序,然后在程序启动后向其输入两个值。
这是我的ruby程序,它与expect配合得很好:

#!/usr/bin/ruby

print "Enter the number1 :"
inp1 = gets.chomp
print "Enter the number2 :"
inp2 = gets.chomp

puts inp1.to_i + inp2.to_i

关于python - Linux Expect教程示例问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19262268/

10-12 01:28