我在工作中遇到了问题。这里是。
我有几个脚本(主要是 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 - 获取名称“
greeterMike”,并打印问候语 - 获取问候语,并将其
mediator输出到屏幕上。
我搜索了一些解决方案并决定使用模块中的Popen函数,子进程指向,它是这样的:subprocessstdoutPIPE
sb = subprocess.Popen(['sh', 'greeter.sh'], stdout = subprocess.PIPE, stdin = stdout, stderr = stdout)
但我无法解决上述步骤 3中的主要问题。任何人都可以给我一些帮助的建议吗?非常感谢!