Почему моя ловушка ERR выполняется для сигнала TERM? - PullRequest
0 голосов
/ 29 апреля 2018

В скрипте 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?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...