如何将'yes'传递给python manage.py flush?

时间:2013-05-02 18:41:10

标签: django bash prompt

根据this StackOverflow thread about piping input,运行echo "yes" | command应该将yes传递给命令的第一个提示符。但是,echo "yes" | python manage.py flush会产生错误

EOFError: EOF when reading a line.

4 个答案:

答案 0 :(得分:22)

我怀疑manage.py正在请求多行输入。有没有理由你不能使用

 python manage.py flush --no-input

documented

答案 1 :(得分:11)

阅读你的评论,似乎你想让第一个自动化,然后让它要求其余的。

您可能已经或可能没有从该链接中学到这一点:

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

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

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

echo yes(假装它是文件)的内容连接起来(从一个输出,然后输出下一个),然后是stdin的内容。结果,您获得了第一个自动答案,然后是其余的提示。

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

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

输出“是”,然后输入你输入的内容,直到你以ctl-d结尾,然后是“no”,然后是你输入的内容,直到你以ctl-d结束。

答案 2 :(得分:4)

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

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

答案 3 :(得分:1)

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

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