[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Expect Module and Bash script

Robert Love

2/3/2007 4:36:00 PM

How do I use ruby expect to feed input to a simple bash script? Here
is a minimal example of what I'm trying to do. All help appreciated.

First, the simple bash script. When run from the command line it
performs as I expect.

#!/bin/bash
echo "1) red"
echo "2) blue"
echo "3) green"
echo "#? "
read CHOICE
sleep 5
echo "$CHOICE is done"
exit 0


Now for the ruby script I want to work with the bash script

#!/usr/bin/env ruby

require 'expect'
require 'pty'

p = PTY.spawn('./simple') do |read,write,pid|
write.sync = true
read.sync = true
$expect_verbose = true # shows actions on screen

read.expect("#? ") {write.puts "3"}

end

When ruby operates the bash script, I doesn't seem like the input is
given to bash.

I've tried ruby 1.8.4 on OSX and ruby 1.8.5 on Fedora Core 6.

2 Answers

Rodrigo Bermejo

2/3/2007 7:28:00 PM

0

R.B.Love wrote:
> How do I use ruby expect to feed input to a simple bash script? Here
> is a minimal example of what I'm trying to do. All help appreciated.
>
> First, the simple bash script. When run from the command line it
> performs as I expect.
>
> #!/bin/bash
> echo "1) red"
> echo "2) blue"
> echo "3) green"
> echo "#? "
> read CHOICE
> sleep 5
> echo "$CHOICE is done"
> exit 0
>
>

tricky but should work

#!/usr/bin/ruby
`script_to_feed<<END
red
END`

-rb.

--
Posted via http://www.ruby-....

Robert Love

2/4/2007 12:28:00 AM

0

On 2007-02-03 13:27:35 -0600, Rodrigo Bermejo <rodrigo.bermejo@ps.ge.com> said:

> R.B.Love wrote:
>> How do I use ruby expect to feed input to a simple bash script? Here
>> is a minimal example of what I'm trying to do. All help appreciated.
>>
>> First, the simple bash script. When run from the command line it
>> performs as I expect.
>>
>> #!/bin/bash
>> echo "1) red"
>> echo "2) blue"
>> echo "3) green"
>> echo "#? "
>> read CHOICE
>> sleep 5
>> echo "$CHOICE is done"
>> exit 0
>>
>>
>
> tricky but should work
>
> #!/usr/bin/ruby
> `script_to_feed<<END
> red
> END`

Uh, thanks but it doesn't use the expect module at all. Does it not
work? I have a lot more I want to do with my script, this was just a
minimal example.

I assume the failure is in my understanding, not the expect process.