[linux-l] bash: [[ vs. [

Oswald Buddenhagen ossi at kde.org
Fr Mai 16 12:18:14 CEST 2003


On Fri, May 16, 2003 at 07:19:47AM +0200, Ihno Krumreich wrote:
> Will man portabel beliben muss man [ benutzen.
>
ja

> Mit [[ haengt man an der bash.
> 
ich würde darauf nicht wetten ... vermutlich kommt das von der ksh (wie
so vieles in der bash). ich habe es auf jeden fall schon in ein paar
anderen shells gesichtet.

> > und wenn es portabel sein soll,
> > dann muß es eh "[ $A = 1 ] && [ $B = 1 ]" sein.
> 
> man kann auch "[ $A = 1 -a $B = 1 ]" schreiben. 
> 
kann man nicht. basta.
zur portablen shell-programmierung empfehle ich ich ein studium der
autoconf-info-page. vorsicht: kotztüte bereithalten.

> Durch den "="-Operator werden Strings verglichen! [...]
>
ach neee ... ;)
s.u.

On Fri, May 16, 2003 at 08:09:45AM +0200, Jan-Benedict Glaw wrote:
> > und wenn es portabel sein soll,
> > dann muß es eh "[ $A = 1 ] && [ $B = 1 ]" sein.
> 
> Nur für's Protokoll - um $A und $B sollten jeweils Anführungsstriche
> stehen. ...
>
ich spare an anführungszeichen wo es nur geht. so lange die eingaben
sich an die vorgaben halten, funzt das auch wunderbar. und wenn sie es
nicht tun, sehe ich gleich, daß meine annahmen falsch waren und es
vermutlich einen echten fehler gibt.
im übrigen braucht man in folgenden fällen keine anführungszeichen, egal
was kommt:
foo=$bar
case $foo in ...

> und dann gibt's da noch den kleinen, feinen Unterschied, daß einige
> test's "=" und andere "==" wollen,
>
das halte ich für ein gerücht - dann würde ja gar nix mehr
funktionieren. = ist korrekt. == ist eine extension, die von diversen
shells "reingesaugt" wurde (um die dummen c-programmierer glücklich zu
machen :).

gruß

-- 
Hi! I'm a .signature virus! Copy me into your ~/.signature, please!
--
Chaos, panic, and disorder - my work here is done.



Mehr Informationen über die Mailingliste linux-l