On Fri, Jul 01, 2005 at 04:18:40PM +0200, Werner Holtfreter wrote:
> Am Samstag, 25. Juni 2005 21:52 schrieb Marc Haber:
>
> > > möchte einfache Fehlerbehandlung ergänzen
> >
> > set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
> > -e Exit immediately if a simple command (see
> > SHELL GRAMMAR above) exits with a non-zero status.
>
> > Hilft das?
>
> Perfekt!
>
> Aber nun muss ich stellenweise doch Fehler akzeptieren, z.B. wenn
> statt einer CD-RW eine CD-R eingelegt wird, soll der Fehler beim
> Löschversuch mit cdrecord nicht zum exit führen.
>
> "man set" sagt:
>
> | Unset all positional parameters: set --
>
> Kann ich damit "set -e" wieder abschalten? Ist "e" ein "positional
> parameter"? Die wörtliche Übersetzung führt da nicht weiter.
>
> Wenn mir jemand eine Alternative zum Abfangen des Fehlers sagt, wäre
> das auch nett.
Ich würde nicht in einem Fort das e-Flag manipulieren -- Zustand ist
vor allem bei solchen Problemen immer tricky, weil gerne mal ein
ungesetztes e entkommt und dann scheiternde Programme doch nicht
diagnostiziert werden.
Warum nicht einfach ein gutes Ende simulieren?
thisCommandMayFail || true
-- wenn du es etwas selbstdokumentierender machen willst, sage
ignorefail() {
true
}
und dann
mkfs /dev/hda1 || ignorefail
Markus
Received on Fri Jul 1 16:26:43 2005