我需要形成各种命令的管道。管道的某些元素或元素序列仅在某些条件成立时才相关。现在,我可以写:
if [[ $whatever ]]; then
cmd1 | cmd2 | cmd3 | cmd4
else
cmd1 | cmd4
fi
但这意味着重复cmd1
and cmd4
,另外,可能有几个条件,我不想写嵌套的 if 。所以,我试着写这个:
if [[ $whatever ]]; then
pipeline_segment="| cmd2 | cmd3"
else
pipeline_segment=""
fi
cmd1 ${pipeline_segment} | cmd4
但是 - 管道符号没有被解释为使用管道的指令。
我如何让 bash 执行我想要的管道?
注意:您可以假设 bash 版本为 4 或更高版本,但前提是您必须这样做。