Выборочно игнорируя Ctrl+C / SIGINT

У меня есть следующее bash составная команда:

while true ; do slow-command-one ; slow-command-two ; slow-command-three ; done

Что происходит:

  • Когда я нажимаю CtrlC в любой точке, вся команда прерывается.

Что я хочу произойти:

  • Когда я нажимаю CtrlC во время выполнения slow-command-two, slow-command-two должен быть прерван, и выполнение должно продолжить slow-command-three.
  • Когда я нажимаю CtrlC в любое другое время, вся команда должна быть прервана (как теперь).

Как я заставляю это происходить?

3
задан 29.05.2013, 21:08

1 ответ

Можно использовать trap команда для этого. Выгода SIGINT с ним и Ctrl+C не повреждает Вашу казнь команды. Затем прерывание сброса к настройкам по умолчанию.

Это должно работать:

#!/bin/bash

while true; do
  slow-command-one;
  trap "echo Proceeding to command three" SIGINT;
  slow-command-two;
  trap - SIGINT;
  slow-command-three;
done
6
ответ дан 07.12.2019, 23:44

Теги

Похожие вопросы