我在工作中遇到了问题。这里是。
我有几个脚本(主要是 shell 脚本)要执行,我想编写一个 python 脚本来自动运行它们。其中一个 shell 脚本在执行期间需要交互式输入。令我困扰的是,我找不到读取它的输入提示的方法,所以我无法决定要输入什么才能继续。
我将问题简化为:
有一个名为 的脚本mediator.py
,它在里面运行greeter.sh
。mediator
接受的greeter
输入提示并将其打印给用户,然后获取用户的输入并将其传递给greeter
. 从用户的角度来看,mediator
需要与行为完全相同。greeter
这里是greeter.sh
:
#! /bin/bash
echo "Please enter your name: " # <- I want 'mediator.py' to read this prompt and show it to me, and then get what I input, then pass my input to 'greeter.sh'
read name
echo "Hello, " $name
我想按以下顺序执行此操作:
- 用户(即我)运行
mediator.py
- 里面的
mediator
奔跑greeter.sh
- 得到的
mediator
输入提示greeter
,并在屏幕上输出。(此时,greeter
正在等待用户输入。这是我坚持的主要问题) - 用户输入一个字符串(例如,'Mike'),
mediator
获取字符串'Mike'并传送给greeter
- 获取名称“
greeter
Mike”,并打印问候语 - 获取问候语,并将其
mediator
输出到屏幕上。
我搜索了一些解决方案并决定使用模块中的Popen
函数,子进程指向,它是这样的:subprocess
stdout
PIPE
sb = subprocess.Popen(['sh', 'greeter.sh'], stdout = subprocess.PIPE, stdin = stdout, stderr = stdout)
但我无法解决上述步骤 3中的主要问题。任何人都可以给我一些帮助的建议吗?非常感谢!