Springe zum Hauptinhalt

Bourne
next up previous contents
Next: eval-Kommando Up: Spezielle Probleme und Kommandos Previous: set-Kommando

Abfangen von Signalen

Signal: Ereignis, das zum Abbruch der Programmausführung führt, (wenn keine Behandlung vorgesehen ist).
  • Signale(Auswahl) Ursache
      Shell-Exit (EOF)
    1 Abhängen der Terminalstation (hangup)
    2 Unterbrechung (DEL-Taste)
    3 QUIT: C
    9 KILL:
    15 Software-Abbruch (kill-Kommando)
  • Problem:


    Bei Ausführung eines Shell-Scripts tritt ein Signal auf, d.h. die Ausführung wird abgebrochen. Es sollen jedoch unbedingt noch bestimmte Aktionen durchgeführt werden, z.B. temporär verwendete Files gelöscht werden.

  • Lösung: trap-Kommando


    trap cmd_liste signal_liste


    Nach Auftreten eines Signals wird cmd_liste ausgeführt und anschließend an der unterbrochenen Stelle fortgesetzt (es sei denn, cmd_liste enthält exit-Kommando)

  • Beispiele:
    trap 'rm -f temp*;exit' 1 2 3 15
    
      ...   oder
    
    trap "" 1 2 3 15      # Ignorieren der Signale
    
  • Bemerkung:

    Da cmd_liste zweimal von der Shell interpretiert wird, sollte 'cmd_liste' geschrieben werden, damit nur einmal (bei der Ausführung) eine Variablenauswertung erfolgt.