[linux-l] Internes trap-Problem ODER falscher Shell-Scriptaufbau

Benjamin Schieder blindcoder at scavenger.homeip.net
Fr Sep 12 07:11:58 CEST 2008


On 11.09.2008 16:33:51, Achim Pabel wrote:
> Hallo Liste,
> 
> seit Tagen stecke ich bei folgendem Problem fest:
> 
> Ein Main-Script läd über  .  Scripte nach; u.a.:
> * eines für trap-handling
> * eines um Kommandos ab zu arbeiten.
> * usw.
> 
> Sollte ein SIG gesendet werden, schreibt das trap-Script u.a. ein 
> STOPScirpt-File ins Verzeichnis.
> 
> Das Kommado-Script besteht u.a. aus drei aufbauenden while-Schleifen.
> ...
> Findet das Kommaod-Script dieses STOPScirpt-File, dann soll es an einer 
> unkritischen Stelle seine Arbeit beenden (also ein kontrolierter Ausstieg aus 
> den while-Schleifen).

Kannst du uns das Script mal zeigen?
Je nach Aufbau (Pipes, Substitution) wird die trap unterschiedlich
ausgewertet, siehe dieses Beispiel:

blindcoder at fortuna:~$ cat test.sh
#!/bin/bash

trap 'echo Caught SIGINT 1; break' INT

while : ; do
        echo "Waiting for signal";
        sleep 30;
done

trap 'echo Caught SIGINT 2; break' INT

while : ; do
        echo "Waiting for another signal";
        sleep 30;
done < <( echo FOO )

trap 'echo Caught SIGINT 3; break' INT

echo FOO | while : ; do
        echo "Waiting for yetanother signal";
        sleep 30;
done
blindcoder at fortuna:~$ bash test.sh
Waiting for signal
Caught SIGINT 1
Waiting for another signal
Caught SIGINT 2
Waiting for yetanother signal
Caught SIGINT 3
test.sh: line 22: break: only meaningful in a `for', `while', or `until'
loop
blindcoder at fortuna:~$

Im letzten Beispiel wird erst die while-schleife beendet, und DANN der
Signal Handler ausgefuehrt.

Freundliche Gruesse,
	Benjamin
-- 
 _  _     _   _            _   
| \| |___| |_| |_  __ _ __| |__
| .` / -_)  _| ' \/ _` / _| / /
|_|\_\___|\__|_||_\__,_\__|_\_\
| |  (_)_ _ _  ___ __
| |__| | ' \ || \ \ /
|____|_|_||_\_,_/_\_\
Play Nethack anywhere with an x86 computer:
	http://www.crash-override.net/nethacklinux.html
#######

Bitte beachte, dass dem Gesetz zur Vorratsdatenspeicherung zufolge
jeder elektronische Kontakt mit mir sechs Monate lang gespeichert
wird.
Please note that according to the German law on data retention,
information on every electronic information exchange with me is
retained for a period of six months.
http://piratenpartei.de/navigation/politik/ueberwachung/vorratsdatenspeicherung

#######
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: Digital signature
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20080912/60d8e980/attachment.sig>


Mehr Informationen über die Mailingliste linux-l