• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Variablenersetzung will nicht

fabmo

Member
Hallo,

Kann mir jemand erklären, warum hierbei die Variablenersetzung nicht klappt?
Code:
trap "kill -9 $LASTSHELL" 3

eigentlich müsste doch innerhalb von Doublequotes die ersetzung gehen oder?
 
OP
F

fabmo

Member
Hallo,
ja LASTSHELL ist gesetzt.
Laut dem Manual muss der trap Befehl so gesetzt werden':
Code:
trap 'Befehl' Signalnummer
Nur mit einfachen Quotes gehts nicht, weil dann die Variablen nicht ersetzt werden.

Das ist ganz merkwürdig. Ich will, dass mein Programm seinen letzten Tochterprozess abschießt, wenn er auf signal 3 etwas erhält.

Jetzt habe ich einfach mal statt
Code:
LASTSHELL=$!
trap "kill -9 $LASTSHELL" 3

das hier probiert

Code:
trap "kill -9 $!" 3

Und das funktioniert. Kann das jemand erklären?
 

regexer

Advanced Hacker
fabmo schrieb:
ja LASTSHELL ist gesetzt.
Da du doppelte Hochkommas verwendest, muss LASTSHELL zu dem Zeitpunkt gefüllt sein, wenn die Shell zu der trap-Zeile kommt. Zudem ist diese Konstruktion etwas unglücklich. Wenn LASTSHELL zu diesem Zeitpunkt nicht gesetzt ist, geht der Kill auf die PID 3.

Code:
trap "kill -9 $!" 3

Und das funktioniert. Kann das jemand erklären?[/quote]Ganz einfach: $! ist immer gefüllt, LASTSHELL nicht.
 
Oben