从父进程获取 bash 读取命令提示符文本



我需要自动化一些 bash 脚本,其中包括用y/n回答read提示。

我试图将stdout/stderr/stdin管道传输到python脚本。写stdin有效,但由于某种原因从stdout/stderr读取提示文本不起作用?(我可以很好地阅读 bash 或子进程输出的其他所有内容。

>>> from subprocess import Popen, PIPE
>>> proc = Popen(['bash','-c','read -r -p "Update system? [y/N] " response'],stdout=PIPE,stdin=PIPE,stderr=PIPE)
>>> proc.stdout.read(10) # <-- hangs, same with stderr, any length

我期待我能够以某种方式阅读显示的提示"Update system? [y/N] ",以便我可以决定要传递的答案。

这是expect擅长的:

https://likegeeks.com/expect-command/

期待和抨击 https://unix.stackexchange.com/questions/351446/bash-and-expect-in-the-same-script