从shell脚本中输入从shell脚本中输入(Input from within shell scr

2019-05-12 02:36发布

我有一个调用,要求用户输入,例如运行的应用程序,需要用户在键入“Y”或“N”的应用程序的脚本。
我怎样才能获得shell脚本不要求用户进行输入,而是在脚本中使用值从预定义变量?

在我的情况下,将需要输入两个问题。

Answer 1:

可以通过管道在任何文本你想读取标准,这将是一样的具有用户键入自己。 例如,要模拟输入“Y”只是使用:

echo "Y" | myapp

或使用壳变量:

echo $ANSWER | myapp

还有一个名为“是” UNIX命令输出“Y”的该问的问题很多,你只是想肯定的回答应用连续流。



Answer 2:

更复杂的情况下期望命令,系统应该有它。 没有多大用它自己,但我怀疑它,你在找什么。

$ man expect

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



Answer 3:

如果应用程序从标准输入读取(而不是从/ dev / tty的,如如passwd程序一样),然后输入多是一个here文档的最佳人选。

#!/bin/sh

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

正如你所看到的,这里的文档甚至允许参数替换。 如果你不想这样,使用<<'EOF'



Answer 4:

我喜欢这样说:如果你想多个输入...你把多个echo语句像这样:

 { echo Y; Y; } | sh install.sh >> install.out

在上面的例子...我喂两个输入到install.sh脚本。 然后......在最后,我通过管道将脚本输出到一个日志文件进行归档和日后查看。



文章来源: Input from within shell script
标签: shell