我需要自动化一些 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