[Sorry, Repost weil scheinbar seit 3 Tagen nicht angekommen]
Andreas Tille <[EMAIL PROTECTED]> 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 [EMAIL PROTECTED] die im Subject
"unsubscribe <deine_email_adresse>" enthaelt.
Bei Problemen bitte eine Mail an: [EMAIL PROTECTED]
-----------------------------------------------------------
849 eingetragene Mitglieder in dieser Liste.