假设我有以下管道:
cmd1 < input.txt |\
cmd2 |\
cmd4 |\
cmd5 |\
cmd6 |\
(...) |\
cmdN > result.txt
Run Code Online (Sandbox Code Playgroud)
在某些条件下,我想cmd3
在cmd2
和之间添加一个cmd4
。有没有办法创建一种条件管道而不将结果保存cmd2
到临时文件中?我会想到这样的事情:
cmd1 < input.txt |\
cmd2 |\
(${DEFINED}? cmd3 : cat ) |\
cmd4 |\
cmd5 |\
cmd6 |\
(...) |\
cmdN > result.txt
Run Code Online (Sandbox Code Playgroud) 我有一个像下面这样的脚本:
flag=false
# Do a bunch of stuff that might set flag to true.
if [[ "$flag" == "true" ]]; then
command \
| pipe_command_a \
| pipe_command_b \
| pipe_command_c \
| pipe_command_d \
> "${output_path}"
else
command \
| pipe_command_a \
| pipe_command_c \
| pipe_command_d \
> "${output_path}"
fi
Run Code Online (Sandbox Code Playgroud)
唯一的区别flag
是true
或false
品牌是pipe_command_b
可能无法运行。有没有办法折叠它,这样我就不必重复所有常见的东西?