Если я запускаю тот же скрипт вручную, не вижу ошибок
Скорее всего, код выхода 3 выдается вашим сценарием оболочки. Если вы выполняете сценарий оболочки, а затем делаете «$?», Если это приводит к «3» - тогда вы должны добавить 3 к своим кодам статуса успеха.