Supondo que o script Cloudstack saia com um status apropriado (0 para sucesso, ≥1 para falha), isso funcionará:
vm_deployed=0
vm_failed=0
for i in {1..4}; do
if cloudstack vm deploy ...; then
(( ++vm_deployed ))
else
(( ++vm_failed ))
fi
done
# I am not sure if I got your description right.
if [ "$JOBID" ] || [ "$ERROR" ]; then
if (( vm_failed > 0 )); then
echo "deployed $vm_deployed, failed $vm_failed VMs"
else
echo "deployed all $vm_deployed VMs"
fi
fi
if (( vm_failed > 0 )); then
exit 1
fi
(Nota: (( ))
é uma base, por isso funcionará apenas enquanto você tiver o bash na linha #!
.)