我需要自动化一些 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
我希望能够以某种方式阅读显示的提示“更新系统?[y/N]”
,以便我可以决定传回什么答案。
最佳答案
这就是expect
所擅长的:
https://likegeeks.com/expect-command/
期待和打击 https://unix.stackexchange.com/questions/351446/bash-and-expect-in-the-same-script
关于python - 让 bash 从父进程读取命令提示 rune 本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51952165/