Linux-Shell (bash) Funktionen und Signale?
Andreas Schigold
- programmiertechnik
Hallo an alle Tuxe da draußen,
habe mal ein kleines Anliegen. Ich möchte folgenden Ablauf realisieren:
setze Signal TERM auf Slot goodBye
while(true) {
Mache dies, das und jenes ....
ruh dich kurz aus ;-)
}
Slotfunction goodBye() {
mach noch was bestimmtes
exit(0);
}
Aufgrund dessen, was ich so in der while-Schleife und vor dem Beenden alles tun möchte halte ich ein Shell-Script für sehr geeignet. Jedoch habe ich keine Ahnung, ob ich in der Shell auch mit Funktionen und Signalen/Slots arbeiten kann und wenn ja, wie.
Weiß da jemand was? Wenn es nicht geht, dann ist das nur halb so schlimm. Ich kann den gleichen Ablauf auch in C realisieren, wäre dort nur ein wenig aufwendiger. Da weiß ich aber, wie das mit den Signalen und Slots funktioniert.
Ein Link auf ein gutes Shell-Tutorial oder ein Hinweis auf ein empfehlenswertes Buch zum Thema Shell unter Unix/Linux würde mich ebenfalls freuen. Auch die Nennung eines anderen Forums zu diesem Thema könnte helfen
Noch eine zweite Frage. Den exit-Status zu einem Programm kann man ja so auswerten:
if myProgram then
echo "execution of myProgram successed"
else
echo "execution of myProgram failed"
fi
Aber bisher bin ich daran gescheitert, mal den exit-Wert quasi als Wert zu fassen, also in einer Variablen zu speichern oder mit bestimmten Werten zu vergleichen, also sowas:
SUCCESS=myProgram // an alle nicht so Versierten, die trotzdem helfen wollen:
// beim belegen der Variablen läßt man meines Wissens nach das $ weg
if $SUCCESS = 0 then echo "Ausführung erfolgreich"
if $SUCCESS = 1 then echo "Ausführung ist aus diesem Grund gescheitert"
if $SUCCESS = 2 then echo "Ausführung ist aus jenem Grund gescheitert"
Geht das überhaupt und wenn ja wie? Muß man da einen Error-Status abfragen? So, wie es dasteht, geht es jedenfalls nicht.
Vielen Dank und tuxige Grüße auch an alle, die mit Winzigweichen Fensters eXPerimentieren: Früher oder später kriegt der Tux alle ;-)
Tschaui
Andreas
PS: Jetzt verwirrt? Erstmal 'ne Abwechslung gefällig? http://schigold.de/spiel/
Hoi,
auch wenn ich kein Tux bin, sondern ein Teufel ;-)
habe mal ein kleines Anliegen. Ich möchte folgenden Ablauf
realisieren:
setze Signal TERM auf Slot goodBye
while(true) {
Mache dies, das und jenes ....
ruh dich kurz aus ;-)
}
Slotfunction goodBye() {
mach noch was bestimmtes
exit(0);
}
Aufgrund dessen, was ich so in der while-Schleife und vor dem
Beenden alles tun möchte halte ich ein Shell-Script für sehr
geeignet. Jedoch habe ich keine Ahnung, ob ich in der Shell auch
mit Funktionen und Signalen/Slots arbeiten kann und wenn ja, wie.
Klar geht das. Trap ist dein Freund:
http://www.mcsr.olemiss.edu/unixhelp/scrpt/scrpt2.9.html
Ein Link auf ein gutes Shell-Tutorial oder ein Hinweis auf ein
empfehlenswertes Buch zum Thema Shell unter Unix/Linux würde mich
ebenfalls freuen. Auch die Nennung eines anderen Forums zu diesem
Thema könnte helfen
http://www.mcsr.olemiss.edu/unixhelp/scrpt/ :-)
Noch eine zweite Frage. Den exit-Status zu einem Programm kann
man ja so auswerten:
if myProgram then
echo "execution of myProgram successed"
else
echo "execution of myProgram failed"
fi
Aber bisher bin ich daran gescheitert, mal den exit-Wert quasi
als Wert zu fassen, also in einer Variablen zu speichern oder mit
bestimmten Werten zu vergleichen, also sowas:
SUCCESS=myProgram // an alle nicht so Versierten, die trotzdem helfen wollen:
// beim belegen der Variablen läßt man meines Wissens nach das $ weg
if $SUCCESS = 0 then echo "Ausführung erfolgreich"
if $SUCCESS = 1 then echo "Ausführung ist aus diesem Grund gescheitert"
if $SUCCESS = 2 then echo "Ausführung ist aus jenem Grund gescheitert"
Geht das überhaupt und wenn ja wie? Muß man da einen Error-Status
abfragen? So, wie es dasteht, geht es jedenfalls nicht.
Der Exit-Status des zuletzt ausgefuehrten Befehls steht in $?.
Siehe auch http://www.mcsr.olemiss.edu/unixhelp/scrpt/scrpt2.2.2.html.
Gruesse,
CK
Oouuppss, das ging aber schnell, Danke Christian!
Nur noch eine klitzekleine Zusatzfrage, falls sie gestattet ist:
Gibt's das auch in Deutsch? ich bin zwar dem Engischen schon ein wenig kundig, aber es ist dann doch immer etwas müßig, immer nur englische Texte zu lesen.
Also es geht schon, aber deutschsprachige Lektüre tu ich nicht verachten.
Gruß und Danke nochmal
Andreas
PS: Und wieder kann ich sagen:
[Zitatanfang Author:Margarete Palffy, src http://forum.de.selfhtml.org/?m=38363&t=6903]
*** Ich profitiere von diesem Forum! ***[Zitatende]
Hoi,
Oouuppss, das ging aber schnell, Danke Christian!
Na, aber gern.
Nur noch eine klitzekleine Zusatzfrage, falls sie gestattet ist:
Gibt's das auch in Deutsch? ich bin zwar dem Engischen schon ein wenig kundig, aber es ist dann doch immer etwas müßig, immer nur englische Texte zu lesen.
Oehm, ich wuesste nichts, ausser vielleicht diese beiden Buecher:
http://www.amazon.de/exec/obidos/ASIN/3446217223/302-5668180-0700826
http://www.amazon.de/exec/obidos/ASIN/3827315115/302-5668180-0700826
Gruesse,
CK
Hi Christian,
Oehm, ich wuesste nichts, ausser vielleicht diese beiden Buecher:
http://www.amazon.de/exec/obidos/ASIN/3446217223/302-5668180-0700826
http://www.amazon.de/exec/obidos/ASIN/3827315115/302-5668180-0700826
vielen Dank, aber ich glaube, daß ich mich ein wenig schämen muß. Habe ja bei Amazon auch schon bestellt. Warum ich da nicht selber geschaut habe? Keine Ahnung. *schäm*
Gruß,
Andreas
Hoi,
vielen Dank, aber ich glaube, daß ich mich ein wenig schämen muß.
Habe ja bei Amazon auch schon bestellt. Warum ich da nicht selber
geschaut habe? Keine Ahnung. *schäm*
Das hab ich mich ehrlich gesagt auch gefragt *g*
Gruesse,
CK
Nochmal Hallo,
Hoi,
vielen Dank, aber ich glaube, daß ich mich ein wenig schämen muß.
Habe ja bei Amazon auch schon bestellt. Warum ich da nicht selber
geschaut habe? Keine Ahnung. *schäm*
Das hab ich mich ehrlich gesagt auch gefragt *g*
Jetzt weiß ich's wieder. Ich dachte, daß vielleicht jemand mal so ein Buch gekauft hat und es so toll findet, daß man es weiterempfehlen kann. Oder das jemand eins eben nicht weiterempfehlen kann. Aber die Online-Rezensionen bei Amazon sprechen ja für sich. Ich werde dann wohl mal meine nächsten 50 EUR investieren und das teurere nehmen, hat einfach ne bessere Bewertung.
Das wäre dann mein 4. Buch zum Thema Linux - ohne die SuSE-Handbücher mitzuzählen. Dem gegenüber stehen - ähäm *nachzähl* - *such* - *stutz* - 0 Windows-Bücher. Liegt wohl daran, daß unser Billy-Boy uns allen suggeriert, daß Fensters ganz einfach sei. Man darf eben nur das wollen, was die Entwickler von Fensters vorgesehen haben. Wer mehr will ist unerwünscht. Deshalb bin ich bei Linux gelandet. Obwohl - SuSE muß auch aufpassen, die machen auch immer mehr Wizards. Solang man nicht mehr will, als die können ist das ja okay, aber was ist wenn man mehr will? Dann scheint man zumindest von Seiten des Telefon- und email-Supports aufgeschmissen zu sein.
Okay, vielen Dank nochmal,
Andreas
PS: und wenns mal langweilig wird, ein wenig Abwechslung gesucht? http://schigold.de/spiel/
Hoi,
Jetzt weiß ich's wieder. Ich dachte, daß vielleicht jemand mal so
ein Buch gekauft hat und es so toll findet, daß man es
weiterempfehlen kann. Oder das jemand eins eben nicht
weiterempfehlen kann. Aber die Online-Rezensionen bei Amazon
sprechen ja für sich. Ich werde dann wohl mal meine nächsten
50 EUR investieren und das teurere nehmen, hat einfach ne bessere
Bewertung.
Ich habe mir sowas aehnliches gedacht, sonst haett ich gar nicht
geantwortet.
Das wäre dann mein 4. Buch zum Thema Linux
Nur vier? Oha. Bei mir sinds ein paar mehr -- duerften inzwischen
so 7 oder 8 sein, dabei allein schon zwei ueber *n*x
System-Programmierung.
Dem gegenüber stehen - ähäm *nachzähl* - *such* - *stutz* - 0
Windows-Bücher.
Bei mir auch. Ich hatte ueberlegt, mir den Petzold zuzulegen, aber
es dann gelassen, weil ich einfach keine Lust hatte, mich mit einer
abstrusen Windows-API auseinander zu setzen.
Liegt wohl daran, daß unser Billy-Boy uns allen suggeriert, daß
Fensters ganz einfach sei.
Aber nicht das Programmieren von solchen Applikationen.
Obwohl - SuSE muß auch aufpassen, die machen auch immer mehr
Wizards. Solang man nicht mehr will, als die können ist das ja
okay, aber was ist wenn man mehr will? Dann scheint man zumindest
von Seiten des Telefon- und email-Supports aufgeschmissen zu
sein.
Benutze halt kein SuSE. Ich wuerde auch davon abraten -- die
Distribution ist maximal fuer Einsteiger brauchbar.
PS: und wenns mal langweilig wird, ein wenig Abwechslung gesucht?
http://schigold.de/spiel/
Glaub mir einfach ;-) mir wird nicht langweilig.
Gruesse,
CK
Sup!
Benutze halt kein SuSE. Ich wuerde auch davon abraten -- die
Distribution ist maximal fuer Einsteiger brauchbar.
Und ich verstehe immer noch nicht, warum die SuSE Pakete schlechter sind als die Red-Hat Pakete, und warum man sich nicht von Yast und Sax ein wenig helfen lassen soll, solange man noch keine Ahnung hat. Wer dann mal Checkung erlangt hat, der kann dann doch selbst die Modelines manipulieren, in der modules.conf rumbasteln, eigene Pakete bauen, SuSE.Config abschalten, aus den Start-Skripten die rc.config Abfrage rauspatchen, eigene Crons einbauen, die SuSE Hilfs-Datenbank deinstallieren... und was SuSE sonst noch alles falsch macht.
Würde mich mal interessieren, was das alles ist, dann schreibe ich ein "CK-ifize" Skript für SuSE ;-)
Gruesse,
Bio
Hoi,
Und ich verstehe immer noch nicht, warum die SuSE Pakete schlechter
sind als die Red-Hat Pakete,
Weil SuSE an den Programmen rumfummelt. Unqualifiziert. Schau dir
z. B. den Apachen an.
und warum man sich nicht von Yast und Sax ein wenig helfen lassen
soll, solange man noch keine Ahnung hat.
Na, ich hab doch gesagt: fuer Einsteiger gehts.
Wer dann mal Checkung erlangt hat, der kann dann doch selbst die
Modelines manipulieren, in der modules.conf rumbasteln, eigene
Pakete bauen, SuSE.Config abschalten, aus den Start-Skripten die
rc.config Abfrage rauspatchen, eigene Crons einbauen, die SuSE
Hilfs-Datenbank deinstallieren... und was SuSE sonst noch alles
falsch macht.
Hast du schonmal versucht, unter SuSE ein Programm zu kompilieren?
Ich meine ein wirklich umfangreiches, etwa KDE oder GNOME oder X.
Ich durfte, um X kompilieren zu koennen, erstmal den Compiler
austauschen.
Würde mich mal interessieren, was das alles ist, dann schreibe
ich ein "CK-ifize" Skript für SuSE ;-)
Das waere relativ einfach:
rm -rf find / -name "\*SuSE\*"
find / -name "\*suse\*"
;-)
Gruesse,
CK
Rehi
Naja, so schlecht ist doch SuSE nun auch wieder nicht! Bisher hatte ich nur einen Fall, daß ich mich von SuSE bevormundet fühlte.
Konkret: Zu SuSE 6.3 gab es mal ein einfaches Programm zum Inet-Connect für T-DSL. Das habe ich einfach in ein Start-Stop-Script reingehangen, weil ich natürlich eine Flatrate habe.
Bei 7.3 hatte man nun das ganze userfreundlich eingebunden: Online per Mausklick oder Dial-On-Demand. Die Quasi-Standleitung war nicht vorgesehen. Also mußte ich anhand der Quellen von "Kinternet" und "smpppd" einen simplen local Client schreiben, der dem smpppd den Einwahl-Befehl und den Hang-Up-Befehl geben soll. Das anschließende Shell-Script mit dem Dauerping und dem ftp-upload der IP-Addi auf die Homepage war dann nur noch Formsache.
Übrigens wird man doch beim Schreiben von Windows-Software ebenfalls zur Genüge bevormundet. Ich sage nur "J++ 6.0" Da wird die öffnende geschweifte Klammer rot unterstrichen, wenn man sie hingeschrieben hat, weil die schließende ja noch fehlt. Bei jedem Tastendruck so eine belastende Syntaxprüfung mit dynamischen roten Unterstreichungen war für mich der sofortige Deinstall-Grund, bevor ich mich überhaupt in Java eingearbeitet hatte.
Oder Visual Basic! Meine gewohnte Programmierweise, Quellcode aus mehreren Programmzeilen zu neuen Zeilen zusammenzufügen (Copy & Paste), bringt in diesem häßlichen Programm defaultmäßig eine belastende Error-Message, die einem sagt, daß die Zeile, die man verläßt, syntaktisch nicht korrekt ist *grusel, grusel*.
I hate Windows!!!
Gruß
Andreas
PS: kann man auch ohne Langeweile spielen *g* http://schigold.de/spiel/
PPS: das mit dem Spiel schreibe ich doch nur nach Lust und Laune hin; manchmal lasse ich es auch weg. Ich mach das eigentlich nicht zielgerichtet.
Gibt's das auch in Deutsch?