我绝对新的期望命令。 假设有一个名为“a.rb”的脚本文件,这是写在红宝石:
STDOUT << 'Overwrite /opt/rails/rails_app/Gemfile? (enter "h" for help) [Ynaqdh] '
s = STDIN.gets
STDOUT << s
它的工作原理波纹管:
$ruby a.rb
Overwrite /opt/rails/rails_app/Gemfile? (enter "h" for help) [Ynaqdh] #wait user's input
y # show the user's input and exit
这似乎很好用期待的命令,如果我要自动运行的用户的输入。
所以,我试图让一个脚本文件(a.expect):
spawn ruby a.rb
expect "Overwrite /opt/rails/rails_app/Gemfile\? \(enter \"h\" for help\) \[Ynaqdh\] "
sleep 3
send "y\r"
但是,这个脚本不工作,我不知道为什么。 这是我的问题。
$ expect -f a.expect
spawn ruby a.rb
Overwrite /opt/rails/rails_app/Gemfile? (enter "h" for help) [Ynaqdh]
$ # <= expect script has finished because of (maybe) timeout?!