私は単にirbウィンドウを開いてコマンドを入力しようとしています。これは動作するために使用されるが、何とか今それが壊れている:Ruby IRBをTclで作成するExpectは壊れたパイプで悲惨に終わります!
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"
私は、など、Tclの8.5.10、 は5.43.2を期待 、Rubyの1.8.7
感謝をWindowsXPのSP3、 を使用しています私は二重引用符がここset PROMPT {irb.*[*">] }
をエスケープする必要があることを示唆しているシンタックスハイライトを見てから、トム
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)
この機能はRubyの1.8.6 P26とのTclでうまく働い8.5.9.0そして今それは壊れている。導入されたバグや、方法論の変更があったはずです。トム – Tom