#!/bin/bash
./script2.sh
echo after-script
script2.sh:
#!/bin/bash
function handler {
exit 130
}
trap handler SIGINT
while true; do true; done
Wenn I script1.sh von einem Terminal zu starten, und dann Strg + C verwendet SIGINT seine Prozeßgruppe zu senden, wobei das Signal wird von script2.sh abgefangen und wenn script2.sh beendet wird, gibt script1.sh "after-script" aus. Allerdings hätte ich erwartet, dass script1.sh sofort nach der Zeile beendet wird, die script2.sh aufruft. Warum ist das in diesem Beispiel nicht der Fall?
Zusätzliche Bemerkungen (edit):
Als script1.sh und script2.sh in derselben Prozessgruppe sind, SIGINT wird zu beiden Scripts gesendet, wenn Strg + C in der Befehlszeile gedrückt wird . Deshalb würde ich nicht erwarten, dass script1.sh fortgesetzt wird, wenn script2.sh beendet wird.
Wenn die Zeile "Trap-Handler SIGINT" in script2.sh auskommentiert ist, wird script1.sh sofort beendet, nachdem script2.sh existiert. Ich möchte wissen, warum es sich dann anders verhält, denn script2.sh erzeugt dann genau den gleichen Exit-Code (130).
Vielleicht 'set -e' verwenden? – phs