[Eisfair_dev] [e1] Samba 8.5.0 (Status 'testing')

Marcus Roeckrath marcus.roeckrath at gmx.de
So Aug 25 16:53:10 CEST 2019


Hallo Holger,

Holger Bruenjes wrote:

>> IMHO sollten die if in diesem ganzen Block so ausgeführt werden, um nicht
>> über mögliche und erlaubte Leerzeichen zu stolpern:
>> 
>> if [ -z "$getentoutput" ]
> 
> hmm, dass hat nichts mit Leerzeichen zu tun,
> 
> test -z und test -n muessen immer mit Anfuehrungszeichen ausgefuehrt
> werden, sonst ist der status immer true

Das schliesst aber nicht die Fehlermeldung aus, wenn die Variable
Leerzeichen enthält:

Mit Leerzeichen "xxx yyy" in der passwd für den Klarnamen des Users:

/var/install/config.d/samba.sh: line 606: [: abc:x:2001:100:xxx: binary
operator expected

Mit xxx_yyy also keinem Leerzeichen mehr ist die Fehlermeldung weg!

IMHO muss die Variable beim -z Test nicht in " stehen und liefert korrekte
Auswertungen, wenn eben keine Leerzeichen zu einem Syntaxfehler führen, wie
folgende Einzeiler zeigen:

# if [ -z $t ] ; then echo true ; else echo false ; fi
true
# if [ -z "$t" ] ; then echo true ; else echo false ; fi
true
# t=1 ; if [ -z $t ] ; then echo true ; else echo false ; fi
false
# t=1 ; if [ -z "$t" ] ; then echo true ; else echo false ; fi
false

Anders sieht das beim -n Test aus, wo direkt das erste Beispiel fälschlich
true liefert:

# if [ -n $x ] ; then echo true ; else echo false ; fi
true
# if [ -n "$x" ] ; then echo true ; else echo false ; fi
false
# x=1 ; if [ -n $x ] ; then echo true ; else echo false ; fi
true
# x=1 ; if [ -n "$x" ] ; then echo true ; else echo false ; fi
true

-- 
Gruss Marcus


Mehr Informationen über die Mailingliste Eisfair_dev