Input from within shell script

You can pipe in whatever text you'd like on stdin and it will be just the same as having the user type it themselves. For example to simulating typing "Y" just use:

echo "Y" | myapp

or using a shell variable:

echo $ANSWER | myapp

There is also a unix command called "yes" that outputs a continuous stream of "y" for apps that ask lots of questions that you just want to answer in the affirmative.


If the app reads from stdin (as opposed to from /dev/tty, as e.g. the passwd program does), then multiline input is the perfect candidate for a here-document.

#!/bin/sh

the_app [app options here] <<EOF
Yes
No
Maybe
Do it with $SHELL
Quit
EOF

As you can see, here-documents even allow parameter substitution. If you don't want this, use <<'EOF'.


the expect command for more complicated situations, you system should have it. Haven't used it much myself, but I suspect its what you're looking for.

$ man expect

http://oreilly.com/catalog/expect/chapter/ch03.html