如何为程序创建合并输入 (stdin)

gre*_*man 6 bash stdin

考虑这样的脚本:

echo a
echo b
echo c
Run Code Online (Sandbox Code Playgroud)

它将产生 3 行,现在我可以像这样运行它:

abc_script | real_program
Run Code Online (Sandbox Code Playgroud)

real_program将输入这 3 个文件。但是,用户有一个问题abc_script,她/他必须记住将输出重定向到real_program.

那么如何将此重定向移动到脚本中呢?像这样的东西(脚本):

echo a | echo b | echo c | real_program
Run Code Online (Sandbox Code Playgroud)

这不起作用,这只是我想做的一个说明——隐藏real_program脚本内部的调用。


记录:在我的情况下,输入由一些文件和额外的行组成。所以我有:

cat $input_file
echo $extra_line
Run Code Online (Sandbox Code Playgroud)

不只是a,b,c。

小智 10

像这样:

( echo a
  echo b
  echo c ) | real_program
Run Code Online (Sandbox Code Playgroud)

echo在子shell 中运行三个命令,并将子shell 的输出通过管道传送到脚本。

Subshel​​l 是bash -c 'echo a; echo b; echo c' | real_program.