有没有办法echo
在管道的末尾简单地附加到当前输出而不是将其全部删除?例如,我如何保留我cat
和的输出grep
并将“END OF OUTPUT”添加到同一管道的输出末尾:
$ cat file.txt | grep 'foo' | echo "END OF OUTPUT"
something foo
foo
foo something
END OF OUTPUT
Run Code Online (Sandbox Code Playgroud)
类似于如何cat -
工作:
echo "START OF OUTPUT" | cat - file.txt
Run Code Online (Sandbox Code Playgroud)
像这样:
{ grep foo file.txt; echo END OF OUTPUT; } > output.txt
Run Code Online (Sandbox Code Playgroud)
无需启动子shell即可对命令进行分组(Bourne shell除外)。
你可以这样做:
grep foo file.txt | cat - <(echo END OF OUTPUT) > output.txt
Run Code Online (Sandbox Code Playgroud)
(使用 ksh、bash 或 zsh)但这会创建更多额外的进程和管道,而没有额外的好处。