自动化终端条目

时间:2015-10-14 19:08:09

标签: python bash python-2.7

我有一个问题,不知道该怎么问。我将尽力解释。

我必须使用bash脚本自动执行安装过程。在进程的中间,我调用了一个名为configure.py的Python脚本。此脚本需要输入终端。

有没有办法通过传递等待的终端参数来调用脚本?

Determining the layout of your Qt installation...
This is the GPL version of PyQt 4.11.4 (licensed under the GNU General Public
License) for Python 2.7.9 on linux2.

Type 'L' to view the license.
Type 'yes' to accept the terms of the license.
Type 'no' to decline the terms of the license.

Do you accept the terms of the license? yes

非常感谢你。

3 个答案:

答案 0 :(得分:3)

虽然一个特别困难的脚本可能会显然从终端而不是stdin读取一些魔法,但是你可能只是使用bash管道语法管道到脚本:

echo yes | python configure.py

或者如果您愿意,可以使用"单个命令"版本使用bash字符串语法:

python configure.py <<<yes

最后,如果您需要提供多行输入,可能最简单的方法是使用bash的heredoc语法:

# Remove the single quotes if you need to do variable interpolation in the
# heredoc; the delimiter ENDOFINPUT is arbitrary, it just has to be used
# (with or without single quotes) after the `<<` operator, and w/o quotes
# at the end of the input to terminate the heredoc
python configure.py <<'ENDOFINPUT'
yes
anotherresponse
andyetanother
ENDOFINPUT

答案 1 :(得分:1)

PyQt配置脚本有一个选项,可以自动确认接受许可证:

python configure.py --confirm-license

由于PyQt安装过程中没有其他部分需要用户输入,这应该就是您所需要的。有关详细信息,请参阅PyQt文档中的Installing PyQt4

答案 2 :(得分:0)

您可以使用pip运算符提供输入 (感谢ShadowRanger) 例如:

echo "yes"  | command
echo "pass" | ssh user@pass