Ignorando seletivamente Ctrl + C / SIGINT

2

Eu tenho o seguinte comando bash compound:

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

O que acontece:

  • Quando pressiono Ctrl C em qualquer ponto, o comando inteiro é abortado.

O que eu quero que aconteça:

  • Quando pressiono Ctrl C durante a execução de slow-command-two , slow-command-two deve ser abortado e a execução deve continuar com slow-command-three .
  • Quando pressiono Ctrl C em qualquer outro momento, o comando inteiro deve ser abortado (como agora).

Como faço para que isso aconteça?

    
por dave4420 05.11.2010 / 11:57

1 resposta

5

Você pode usar o comando trap para isso. Pegar SIGINT com ele e Ctrl + C não prejudicam sua execução de comando. Em seguida, redefina o trap para as configurações padrão.

Isso deve funcionar:

#!/bin/bash

while true; do
  slow-command-one;
  trap "echo Proceeding to command three" SIGINT;
  slow-command-two;
  trap - SIGINT;
  slow-command-three;
done
    
por 05.11.2010 / 12:23

Tags