2013-10-09 16 views
1

我正在學習如何使用Linux命令 - 期望遵循this tutorialLinux Expect教程示例問題

#!/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" 

btw,我找不到任何名爲「./additon.pl」的文件,所以我無法成功運行該示例。

我不知道這個Perl是如何編寫的,但我想像某種方式,腳本(如jvperrin提到的,它可以是任何語言)應該從標準輸入讀取並添加它們。 我使用Python,我試圖寫adder.py。

#!/usr/bin/python 
import sys 
print int(sys.argv[1]) + int(sys.argv[2]) 

,但是當我改變重生「./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) 

回答

1

菌種基本上將啓動一個命令,所以你可以用任何你想要的命令來使用它。例如,您可以將其用作spawn "cd .."spawn "ssh [email protected]"而不是spawn "./addition.pl"

在這種情況下,spawn指令啓動一個交互式perl程序addition.pl,然後在程序啓動後輸入兩個值。

這裏是我的Ruby程序,它與正常工作預計:

#!/usr/bin/ruby 

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

puts inp1.to_i + inp2.to_i 
+0

我沒有看到另外的程序在本教程......你知道的Perl?是否很難逆向工程拿出本教程中使用的perl腳本? –

+0

@ B.Mr.W。 Perl腳本不在本教程中,但可以使用任何語言創建附加腳本,但不一定是Perl。我個人不認識Perl,但我知道Ruby,如果你覺得這很有幫助,我可以用它編寫一個等效的程序。 – jvperrin

+0

@ B.Mr.W。我添加了一個適用於我的示例Ruby程序。 – jvperrin