Toon posts:

[bash] script stoppen bij problemen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik heb een bash-scriptje wat elke ochtend mijn apache-logs filtert, sorteerd en gzipt. De originele files mogen pas gedeleted worden als alle vorige commando's zijn gelukt. Hoe kan ik automatisch een bash-script stoppen als een van de commando's een fout geeft.

Verwijderd

dit will je denk ik hebben

http://www.tldp.org/LDP/abs/html/exit-status.html


kun je kijken of een prog goed is completed.

  • Equator
  • Registratie: April 2001
  • Laatst online: 19:52

Equator

Crew Council

🦺#Rodekruis #whisky #barista

Controleer aan het einde van je script of de gezipte bestanden aanwezig zijn, en delete daarna dan je originele files.

IK ken weinig bash scripten, maar iets als
code:
1
2
3
4
if exists /backup/files.gz
rm -rf /var/log/*
else end
fi


Eventueel nog aanpassen dat je zoekt op bestanden die net gemaakt zijn..
(please, niet te hard lachen om mijn script ;) )

[ Voor 0% gewijzigd door Equator op 30-08-2002 13:10 . Reden: code eindig je met /code :'( ]


  • intoxicated
  • Registratie: Januari 2001
  • Niet online

intoxicated

Haaaai :w | ALT-S

Kijk eens hier:
BASH Programming - Introduction HOW-TO

Maar goed, ik doe altijd gewoon:
command || exit
Als 'command' een error geeft stopt het script, anders niet. Geen idee of het netter kan, ik doe zelf verder heel weinig met shellscripts :P .

Plz, wees niet te sarcastisch bij jullie commentaar op deze oplossing :P

"Anyone who does not agree with me is mentally sick, and should be shot I'm afraid to say."
- Pastor Richards @ VCPR


  • phreggle
  • Registratie: Juni 2002
  • Niet online
Wat intoxicated zegt kan je hier prima voor gebruiken.
code:
1
2
commando1 || commando2 <-- als commando1 faalt, voer dan commando2 uit
commando1 && commando2 <-- als commando1 goed gaat, voer dan commando2 uit


In het geval van apache logs kan je dus doen 'maak zip' && 'delete logs'. Eventueel kan je ook nog reeksen van commando's groeperen met haakjes, in de zin van: "(ls; ls; ls) && echo hoi");

Verwijderd

Topicstarter
ok bedankt,

code:
1
if [ ! $? -eq 0 ]; then <stoppen>; fi;


werkt, doe ik na de belangrijke commando's. <stoppen> is natuurlijk een waarschuwing met "exit 1" om te stoppen. krijg dan netjes een email van cron dat er iets fout is gegaan.

  • bkor
  • Registratie: November 2000
  • Niet online
Dit lijkt me makkelijker, zie man bash:
code:
1
set -e

  • intoxicated
  • Registratie: Januari 2001
  • Niet online

intoxicated

Haaaai :w | ALT-S

bkor schreef op 30 augustus 2002 @ 13:42:
Dit lijkt me makkelijker, zie man bash:
code:
1
set -e
Was al bang dat er zoiets zou komen en dat ik compleet voor l*l sta met m'n || :'(

"Anyone who does not agree with me is mentally sick, and should be shot I'm afraid to say."
- Pastor Richards @ VCPR


Verwijderd

das te kracht van bash. (in princiepe)
een half milioen wegen naar rome.
Pagina: 1