Tem certeza de que o código está fazendo o que você acha que está fazendo? Vamos recuar para que possamos ver mais facilmente a lógica:
if [ $err_abc -gt 0 ]; then
echo "$err_AB"
else
echo "No errors found"
if [ $err_ERR -gt 0 ]; then
echo "$err_eRR"
else
echo " \n No err files found"
exit 0
fi
fi
Seu segundo bloco if
está sendo executado apenas se e somente se o teste do primeiro bloco for falso. Se você quiser que ambos os testes sejam executados em todos os casos, isso precisa ser reescrito:
if [ $err_abc -gt 0 ]; then
echo "$err_AB"
else
echo "No errors found"
fi
if [ $err_ERR -gt 0 ]; then
echo "$err_eRR"
else
echo " \n No err files found"
exit 0
fi
Além disso, o exit 0
que você tem na cláusula if
da sua instrução else
final só é executado se houver apenas se o segundo teste for falso. Se esta não for sua intenção, essa declaração deve ser movida apropriadamente.