Se você deseja executar sequencialmente, o código de saída é tudo que você precisa;
command && echo "it worked"
ou
command || echo "we are having a bad day"
Se o gnome-terminal ou o sshpass não estiver retornando o arquivo de código de retorno correto, um relatório de bug e usar uma alternativa.
Se você deseja executar em paralelo, use xargs -P ou parallel onde o
exit status is the combination of the exit statuses of each command ran, ORed together. (Thus, if any one command exits nonzero, parallel as a whole will exit nonzero.)
Se um dos seus comandos estiver retornando antes da execução, use uma alternativa ou faça com que seus comandos adotem um padrão de design assíncrono (reinvente a roda), por exemplo, anexando
; echo $(date) $? > task1.r
esperando que todas as tarefas sejam concluídas;
while [ $(cat task*.r 2>/dev/null | wc -l) -lt $TASK_COUNT ] ; do
sleep 1
done
grep -P " [^0]$" task*.r && echo "we are having a bad day"