Терминология: я использую PARENT для родительского сценария, CHILD для дочернего сценария.
Если у вас нет доступа (я полагаю, вы не можете изменить) сценарий CHILD, выне сможет перехватить сигнал от его имени, даже если он является родительским.
Однако, поскольку процесс PARENT может проверять состояние выхода CHILD, вы можете обнаружить выход по сигналу INT, предполагая, что CHILD используетобработка по умолчанию CTRL / C.
In Parent:
# Needed to prevent the parent from aborting on INT
trap 'echo "Got Signal"' INT
run-child-command ; X=$?
if [ "$(kill -l $X)" = INT ] ; then
echo "Child killed with INT"
echo "Cleanup ..."
...
fi
# Restore origianl INT signal, if needed
trap - int