В скрипте bash я установил две ловушки: одну для сигнала TERM и одну для сигнала ERR.
Когда я посылаю сигнал TERM в сценарий, он выполняет прерывание ERR вместо прерывания TERM.
Я пробовал на двух компьютерах. В одном, Ubuntu 14.04.5 LTS, скрипт работает нормально. В другой. Scientific Linux 7.3 (Nitrogen), ошибка возникает.
Ниже приведен скрипт:
#!/bin/bash
trap "echo caught signal SIGTERM; exit 1;" SIGTERM
trap "echo caught signal SIGINT; exit 1;" SIGINT
trap "echo caught signal ERR; exit 1;" ERR
set -e
sleep 50
echo grep with err
grep sasas sasasa
Когда я выполняю kill -TERM -PID
для PID скрипта, я получаю следующее:
Terminated
caught signal ERR
Если команда sleep
заканчивается, я получаю следующее:
grep with err
grep: sasasa: No such file or directory
caught signal ERR
В чем может быть проблема? Как я могу заставить ловушку TERM быть выполнена для сигналов SIGTERM?
Спасибо