Apenas os usuais operadores &&
e ||
:
cmd1 < input.txt |
cmd2 |
( [[ "${DEFINED}" ]] && cmd3 || cat ) |
cmd4 |
cmd5 |
cmd6 |
(...) |
cmdN > result.txt
(Observe que nenhuma barra invertida é necessária quando a linha termina com o pipe.)
Atualizar de acordo com a Observação de Jonas .
Se cmd3 puder terminar com código de saída diferente de zero e você não quiser que cat
processe a entrada restante, inverta a lógica:
cmd1 < input.txt |
cmd2 |
( [[ ! "${DEFINED}" ]] && cat || cmd3 ) |
cmd4 |
cmd5 |
cmd6 |
(...) |
cmdN > result.txt