您实际上无法有条件地终止 bash 管道。管道中的所有命令同时启动。但是,有一个工具可以帮助您创建条件管道。在moreutils您可以找到ifne当且仅当输入/dev/stdin不为空时执行命令的工具。所以你可以这样写:
$ command1 | ifne command2 | ifne command3 | ifne command4
Run Code Online (Sandbox Code Playgroud)
这里所有命令ifne和command1都是同时启动的。只有ifne通过 接收到输入/dev/stdin,它才会启动各自的commandx