I have a bash script that employs the
read command to read arguments to commands interactively, for example yes/no options. Is there a way to call this script in a non-interactive script passing default option values as arguments?
It’s not just one option that I have to pass to the interactive script.
pipe your input
maybe" | your_program
redirect from a file
your_program < answers.txt
use a here document (this can be very readable)
your_program << ANSWERS
use a here string
your_program <<< $'yes\nno\nmaybe\n'
For more complex tasks there is
expect ( http://en.wikipedia.org/wiki/Expect ).
It basically simulates a user, you can code a script how to react to specific program outputs and related stuff.
This also works in cases like
ssh that prohibits piping passwords to it.
You can put the data in a file and re-direct it like this:
$ cat file.sh
Data for the script:
$ cat data.txt
Executing the script:
$ file.sh < data.txt
Just want to add one more way. Found it elsewhere, and is quite simple.
Say I want to pass yes for all the prompts at command line for a command “execute_command”, Then I would simply pipe yes to it.
yes | execute_command
This will use yes as the answer to all yes/no prompts.
You can also use printf to pipe the input to your script.
printf "yes\nno\nmaybe\n$var\n" | ./your_script.sh