[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Xdm login schlaegt fehl



[Sorry, Repost weil scheinbar seit 3 Tagen nicht angekommen]

Andreas Tille <tillea@rki.de> writes:

... [ -n "$@" ] != [ $@ ]

> Merkwürdig ist es aber schon.  Rechtfertigt das einen Bug-Report?
> Wenn ja an bash oder nur an die Manpage?

Das Problem ist, das obige Verhalten ist korrekt und sogar im Posix
und Single Unix so festgelegt :-(

Die bash selbst expandiert "$@" und $@ ohne Parameter scheinbar
identisch zu leer.  Jedoch reagiert test auf -n, d.h.:

~$ test "$@"; echo $?
1
~$ test -n "$@"; echo $?

0

Durch das Fehlen eines Parameters wird der Aufruf von test zu 'test'
bzw. 'test -n' degradiert, der erste Aufruf liefert falsch, der zweite
wahr.  Durch das Fehlen einer Zeichenkette als Argument zu -n liefert
'test -n' das falsche Ergebnis (eventuell wird 'test -n' wie 'test -n
"-n"' interpretiert, zumindestens suggeriert dies die Single Unix
Specification:

   0 arguments:
          Exit false (1).
   1 argument:
          Exit true (0) if $1 is not null; otherwise, exit false.
   2 arguments:
          + If $1 is "!", exit true if $2 is null, false if $2 is not
            null.
          + If $1 is a unary primary, exit true if the unary test is
            true, false if the unary test is false.
          + Otherwise, produce unspecified results.

)

Also immer [ $# -gt 0 ] verwenden, das Verhalten von [ -n "$@" ] ist
nicht das gewünschte.

        Torsten


-- 
-----------------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie bitte eine
E-Mail an debian-user-de-request@lehmanns.de die im Subject
"unsubscribe <deine_email_adresse>" enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@Lehmanns.de
-----------------------------------------------------------

849 eingetragene Mitglieder in dieser Liste.


Reply to: