Eu olhei para Sair de um pipeline se um comando anterior falhar , mas estou procurando uma solução mais geral para esse problema:
chlist -q -v -m -r $sourcelist | \
grep '^USER:' | \
chlist -q -v -f - $superlist
o problema é que se o primeiro chlist falhar, nenhuma entrada no 2º chlist é realmente muito ruim.
Existe alguma solução para interromper a execução do segundo chlist além de colocar a saída do primeiro em um arquivo temporário e verificar o status de saída (por exemplo, não usar um pipeline)?
Todos os comandos em um pipeline são iniciados de forma assíncrona, portanto, se você quiser garantir que o último comando não seja executado se não houver entrada, será necessário dividir o pipeline conforme sugerido. Alternativamente, talvez
chlist
(que eu não conheço) tenha uma opção para fazer isso para você.Depois de brincar um pouco mais com isso, tive a ideia abaixo e acho que pode ser uma solução viável e bastante geral:
(Eu omiti o
grep
para maior clareza aqui, mas isso funciona bem com ele lá)Outra variação (mais limpa?):
Que tal anexar uma linha fictícia à saída do primeiro comando que satisfaça os requisitos de entrada do último, mas não acione uma ação?