Re: OT: set -e in shell script

From: Manfred Lotz <manfred.lotz(at)arcor.de>
Date: Sat, 9 Aug 2014 22:21:26 +0200

Ich benutze test -f ... auch nur, wenn ich optional was machen
will. So gesehen, war mein Beispiel in meinem letzten Post
sehr konstruiert.

Mir ging es nur darum, dass jemand mit 'set -e' sein Script verbessern
will und dann Fehler entdecken will.

Ich sehe aber ein, dass es logisch ist bei if, while, &&, || nicht
abzubrechen. Es ist eh am besten set -e und set -u gleich dann zu
setzen, wenn man ein Script neu entwickelt. Natürlich sollte man auch
noch
   set -o pipefail
machen. Ist zwar alles nicht perfekt, aber hilft schon einiges zu
verhindern.

Abgesehen davon benutze ich bei komplexeren Scripts eh kein Shell
scripting sondern Perl (andere nehmen Python oder Ruby).

-- 
Manfred
On Sat, 9 Aug 2014 21:56:21 +0200
Patrick Hess <patrickhess(at)gmx.net> wrote:
> Manfred Lotz schrieb:
> > Patrick Hess <patrickhess(at)gmx.net> wrote:
> > > Kann mir auch kein Beispiel in der Praxis vorstellen, bei dem das
> > > von dir erwartete Verhalten sinnvoll wäre.
> > Aber ja doch. Ich will etwas ausführen, wenn ein Command gut geht.
> >
> > Dafür kann man so was machen:
> > 
> >    test -f "/bla" &&  do_something "/bla"
> 
> Das ist bei dir ein Praxisbeispiel!? Ich will doch nicht hoffen,
> dass irgendjemand in der Praxis tatsächlich solchen Code schreibt,
> bei dem man nicht mal ansatzweise erahnen kann, was er tun soll.
> 
> Aber gut, dann helfe ich hier mal kurz aus. Zuletzt habe ich
> sinngemäß etwa so was geschrieben:
> 
>    test -f user_config_file  &&  source user_config_file
> 
> Falls die optionale "user_config_file" existiert, überschreiben die
> darin gesetzten Einstellungen (= Variablen) die entsprechenden
> globalen Einstellungen, die zuvor aus der "global_config_file"
> gelesen wurden. (*Das* ist meiner Meinung nach ein Beispiel,
> welches in der Praxis auch tatsächlich vorkommt.)
> 
> > dann will ich ja, dass Fehler zum Abbruch führen.
> 
> Warum sollte es im obigen Beispiel ein Fehler sein, wenn die
> "user_config_file" nicht existiert? Die Existenz dieser Datei
> ist optional. Wenn sie nicht existiert, werden eben die globalen
> Einstellungen verwendet. Für den weiteren Programmablauf ist
> diese Datei jedenfalls nicht notwendig.
> 
> Das Skript in diesem Fall abzubrechen, ergäbe keinen Sinn.
> Im Grunde würde ein solches Verhalten den &&-Operator ja
> völlig ad absurdum führen. Und genau deshalb macht die Shell
> das zum Glück auch nicht so. ;-)
> 
> Viele Grüße,
> Patrick
> 
> 
> To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
> with "unsubscribe de-bsd-questions" in the body of the message
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 09 Aug 2014 - 22:21:35 CEST

search this site