[PATCH 4/4] Setzt einen Wert wenn der Router weder Position noch Mail Adresse hat, cronjob alle 5 Minuten

Tobias Klaus tk+ff at meskal.net
Mi Apr 6 20:58:25 CEST 2016


Hallo,

On Mittwoch, 6. April 2016 18:34:34 CEST mayosemmel wrote:
> > +uci get system. at system[0].latitude
> > +lat=$?
> > +uci get system. at system[0].longitude
> > +lon=$?
> > +uci get system. at system[0].contact
> > +mail=$?
> > +if [ $lat -eq 1 ]  && [ $lon -eq 1 ]  && [ $mail -eq 1 ] ; then
> 
> Ich denke das ließe sich auch schöner lösen z.B.
> if [ uci get system. at system[0].latitude ] && \
> [ uci get system. at system[0].longitude ] && \
> [ uci get system. at system[0].contact ] ; then
So funktioniert das vermutlich auch nicht.
[ ist keine Sprachelement sondern ein Programm das sich im groben verhält wie 
das Programm "test"-> "man test".

"if" testet _nur_ auf den Rückgabewert selbst. Wenn man "if [ " nutzt, testet 
man damit auf den Rückgabewert von "[" also "test".
In eurem Fall "sieht" das test progamm nur einen string. Den wertet es dann 
standardmäßig mit "-n"(Länge ungleich Null) aus. Das heißt einerseits, dass 
der uci call nie aufgerufen wird und andererseits, dass "test" immer "true" 
also 0 zurückgeben wird.
Da wir aber eh auf Rückgabewerte testen wollen, können wir gleich "if" 
verwenden.
Das hier sollt funktionieren:
if    uci get system. at system[0].latitude      \
   && uci get system. at system[0].longitude     \
   &&  uci get system. at system[0].contact ; then


Grüße
Tobias



Mehr Informationen über die Mailingliste franken-dev