8

根据这个关于管道输入的 StackOverflow 线程,运行echo "yes" | command应该传递yes到命令的第一个提示符。但是,echo "yes" | python manage.py flush会产生错误

EOFError: EOF when reading a line.
4

4 回答 4

30

我怀疑 manage.py 请求的输入不止一行。有没有你不能使用的原因

 python manage.py flush --no-input

记录

于 2013-05-02T19:04:32.953 回答
12

阅读您的评论,您似乎希望将第一个自动化,然后让它要求其余的。

您可能从该链接中学到了这一点,也可能没有:

管理脚本要求输入标准输入。Echo 将其输出传递到其标准输出,然后关闭。

您想将回显的“是”传递给标准输出,然后从键盘读取。

cat <(echo "yes") - | python manage.py

将连接(从一个输出,然后是下一个输出)echo yes(假装它是一个文件)的内容,然后是标准输入的内容。结果,您会得到第一个自动答案,然后是其余的提示。

请注意,您甚至可以多次执行此操作:

cat <(echo "yes") - <(echo "no") -

将输出“yes”,然后是您输入的任何内容,直到您以 ctl-d 结尾,然后是“no”,然后是您输入的任何内容,直到您以 ctl-d 结尾。

于 2013-05-02T20:53:18.310 回答
6

假设安装了 yes 命令(应该是),这将起作用: yes yes | python manage.py flush

但正如提到 python manage.py flush --no-input 的 : 可能更好。

于 2013-05-02T19:59:31.397 回答
1

很可能“python manage.py flush”在读取“yes”后需要额外的输入,但它没有得到,因为“echo”yes“”完成并且其输出文件已关闭。

您需要弄清楚“python manage.py flush”还有什么期望并在其输入中提供。

于 2013-05-02T19:04:13.090 回答