Você pode usar um grupo de processos:
set -m
(
for part in input_*; do
(python3 "$part" || kill 0) &
done
wait
)
set -m (e o recurso de shell POSIX opcional, necessário ao recurso de shell Unix) executa tarefas em seu próprio grupo de processos. Em bash , yash , zsh , mksh , são os jobs da subshell em que set -m está habilitado, de forma que o% outer(...) e todos os processos criados nele sejam colocados nesse mesmo grupo de processos.
Para dash e outros shells baseados em ash , isso só funciona no processo de shell de nível superior. Então, esse código funcionará, a menos que seja colocado em uma subcamada.
Isso não funcionará em AT & T ksh ou no antigo shell SysV / Bourne.
kill 0 envia um sinal SIGTERM para todos os membros do grupo de processos atual.