Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Abarbeitung von Scripten

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Thomas
Gast





BeitragVerfasst am: 27. Dez 2001 15:00   Titel: Abarbeitung von Scripten

Hi,
ich habe einige Scripte das "dies und das" erledigen. Bisher habe ich für jedes Scripte einen Eintrag in der Crontab gemacht.
Nun meine Idee:
Ich starte nur eine 1 Script und dort stehen alle Scripts drin:

Wie muß nun das Script aufgebaut sein, damit alles ordentlich funktioniert?

#!/bin/bash

script1
script2
usw


exit

Es sollte so funktionieren wie in einer BAT-Datei (graue DOS-Urzeit) wo dann der Aufruf mit CALL script1 usw. erefolgte.
Schön wäre, wenn man noch einen Errorlewel hätte, der den Erfolg des jeweiligen Scriptes auswertet.

Hat jemand eine Idee
Bin leider noch Newbee.

Danke
Thomas
 

tuxpaq



Anmeldungsdatum: 23.11.2001
Beiträge: 8

BeitragVerfasst am: 28. Dez 2001 14:20   Titel: Re: Abarbeitung von Scripten

Hallo Thomas,

Eine Abfrage des Errorlevel erreichst Du ueber die interne shell-variable $?
Wenn also script1 so definiert ist, dass es bei einem Fehler mit "exit 1"
aussteigt, kannst Du das danach wieder abfragen...
Bsp:
script1.sh:
#!/bin/sh
./script2.sh
exitcode=$?
echo $exitcode
exit 0
#####

script2.sh:
#!/bin/sh
exit 1
#####

Das klappt aber nur, wenn das aufgerufene (hier) script2 sich nicht von der Shell abkoppelt.
Aendere in script1 den Aufruf von "./script2.sh" in "./script2.sh &" um, schon geht's nimmer.

Hoffe das hilft erst mal.
byTe,
tuxPAQ
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

Jochen
Gast





BeitragVerfasst am: 29. Dez 2001 20:09   Titel: Re: Abarbeitung von Scripten

@tuxPAQ:

Auch wenn man einen Prozess mittels "&" in den Hintergrund schickt, kommt man noch an den Exitcode: Wenn das aufrufende Skript irgendwann nix mehr zu tun hat oder mit Berechtigung davon ausgehen kann, dass der Kindprozess zu Ende gelaufen ist, einfach ein "wait PID" absetzen. An die PID des Kindprozesses kommst Du mittels "$!" direkt nach Aufruf des Hintergrundprozesses; wenn Du nur einen absetzt, kannst Du auch direkt "wait $!" verwenden. wait wartet dann auf die Beendigung des Kindprozesses und liefert bei Ende (oder sofort, wenn der Prozess schon abgebaut ist) den Exit-Code des Kommandos, das im Hintergrund lief.

@Thomas: Sorry, ist natürlich OT zu Deiner Frage.

Aber wenn beispielsweise die Skripte nur laufen sollen, wenn die Vorgänger erfolgreich waren (also einen Exit-Code gleich Null liefern), kann man dies einfach mittels
code:
skript1 && skript2 && skript3
erreichen. skript 2 läuft nur, wenn skript1 erfolgreich war, und skript3 läuft nur, wenn skript2 keine Probleme hatte.

Jochen
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy