[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