I have a question, Im having very simple script that starts anpther binary file in loop it looka like this:
for (( i=0; \\\\$i <= 5; i++ )) ; do
test.sh
I believe using yes
might be enough if your test.sh
script doesn't use its standard input for other purposes : yes
will produce an infinite stream of lines of y
by default, or any other string you pass it as a parameter. Each time the test.sh
checks for user input, it should consume a line of that input and carry on with its actions.
Using yes Y
, you could provide your test.sh
script with more Y
than it will ever need :
yes Y | test.sh
To use it with your loop, you might as well pipe it to the loop's stdin rather than to the test.sh
invocation :
yes Y | for (( i=0; i <= 5; i++ )) ; do
test.sh
done
Something like the following code snippet should work :
for (( i=0; i <= 5; i++ ))
#heredoc. the '-' is needed to take tabulations into acount (for readability sake)
#we begin our expect bloc
do /bin/usr/expect <<-EOD
#process we monitor
spawn test.sh
#when the monitored process displays the string "[Y/n]" ...
expect "[Y/n]"
#... we send it the string "y" followed by the enter key ("\r")
send "y\r"
#we exit our expect block
EOD
done