我有一个调用,要求用户输入,例如运行的应用程序,需要用户在键入“Y”或“N”的应用程序的脚本。
我怎样才能获得shell脚本不要求用户进行输入,而是在脚本中使用值从预定义变量?
在我的情况下,将需要输入两个问题。
我有一个调用,要求用户输入,例如运行的应用程序,需要用户在键入“Y”或“N”的应用程序的脚本。
我怎样才能获得shell脚本不要求用户进行输入,而是在脚本中使用值从预定义变量?
在我的情况下,将需要输入两个问题。
可以通过管道在任何文本你想读取标准,这将是一样的具有用户键入自己。 例如,要模拟输入“Y”只是使用:
echo "Y" | myapp
或使用壳变量:
echo $ANSWER | myapp
还有一个名为“是” UNIX命令输出“Y”的该问的问题很多,你只是想肯定的回答应用连续流。
更复杂的情况下期望命令,系统应该有它。 没有多大用它自己,但我怀疑它,你在找什么。
$ man expect
http://oreilly.com/catalog/expect/chapter/ch03.html
如果应用程序从标准输入读取(而不是从/ dev / tty的,如如passwd
程序一样),然后输入多是一个here文档的最佳人选。
#!/bin/sh
the_app [app options here] <<EOF
Yes
No
Maybe
Do it with $SHELL
Quit
EOF
正如你所看到的,这里的文档甚至允许参数替换。 如果你不想这样,使用<<'EOF'
。
我喜欢这样说:如果你想多个输入...你把多个echo语句像这样:
{ echo Y; Y; } | sh install.sh >> install.out
在上面的例子...我喂两个输入到install.sh脚本。 然后......在最后,我通过管道将脚本输出到一个日志文件进行归档和日后查看。