我只是想打开一个 irb 窗口并输入命令。这曾经可以工作,但不知何故现在它被打破了:
package require Expect
set exp::winnt_debug 1
set errorInfo
set SPAWN_ID ""
set EXPECT_TIMEOUT 20
set PROMPT {irb.*[*">] }
set RUBY_HOME "C:/ruby/"
exp_spawn [file join $RUBY_HOME "bin" "ruby.exe"]\
[file join $RUBY_HOME "bin" "irb"] "--noinspect"
set SPAWN_ID $spawn_id
puts $spawn_id
expect {
-i $SPAWN_ID\
-timeout $EXPECT_TIMEOUT\
-re $PROMPT {
set retVal 1
puts "retVal 1"
}
timeout {
set retVal 0
puts "retVal 0"
}
}
match_max -i $SPAWN_ID 10000
send -i $SPAWN_ID "Hello World\r"
我正在使用 WindowsXP SP3、Ruby 1.8.7、Tcl 8.5.10、Expect 5.43.2 等。
谢谢,汤姆
irb(main):001:0> retVal 1
write(spawn_id=]: broken pipe
while executing
"send -i $SPAWN_ID "Hello World\r""
(file "TomSpawnRuby.tcl" line 37)