【问题标题】:Linux command stdout to stdin?Linux命令标准输出到标准输入?
【发布时间】:2014-02-02 19:04:46
【问题描述】:

我正在使用 GNU/Linux 控制台来设置一个小型 bash 脚本。我正在尝试将 \n char 作为输入发送到另一个程序,例如:

$printf \\n | program VARS -          #(VARS are valid program modifiers.)

但在执行时省略了 \n 字符,因此我的程序无法将 \n 理解为输入的一部分。之所以要使用 \n 字符,是因为我的程序要求一些我想设置为空白的输入,而我的程序正在等待用户的输入。

提前致谢。

【问题讨论】:

  • printf \\n 可以简化为 echo,但两者都应该工作。你的程序真的是从标准输入读取的吗?你试过运行它并点击Enter吗?
  • 思路不是按回车,如果程序需要执行300次以上,你能想象按这么多次回车吗? :)
  • 我理解你的想法,我正在努力寻找它不起作用的原因。你明白我的想法了吗?
  • 是的,我理解你,我知道当 \n char 正在使用时,然后使用 printf 而不是 echo... printf 对特殊字符更友好。

标签: linux command printf stdout stdin


【解决方案1】:

这个网页帮助我解决了这个问题: https://superuser.com/questions/569432/why-can-i-see-password-prompts-through-redirecting-output

基本上(在这种情况下)该程序直接从 /dev/tty 读取输入

【讨论】: