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

Re: BASH


Thomas Stiefel <Tom@xxxxxxx> wrote:

> > a) {} kann man in bash auch weglassen
> 
> Die geschweiften Klammern braucht man nur, wenn der Variablenname 
> Zeichen enthaelt, die keine gueltigen Trennzeichen enthaelt.

Das gibt es nicht.[1] Als Trenner fungiert ja gerade alles, was
kein gueltiges Zeichen in einem Bezeichner ist.

> A_B=XY
> 
> echo $A_B      =>   (nichts, da $A nicht definiert)
> echo ${A_B}  =>  XY

Falsch, '_' ist kein Trenner, $A_B und ${A_B} sind gleichwertig.

Es ist genau anders herum: Man benoetigt die geschweiften Klammern, wenn
auf den Variablennamen weitere Zeichen folgen, die in einem Bezeichner
gueltig sind. z.B. ${A}_B.

Ebenfalls geklammert werden muessen mehrstellige Positionsparameter:
$10 entspricht ${1}0, das zehnte ist ${10}.

Und natuerlich werden die Klammern gebraucht, wenn die Variable nicht
direkt ersetzt werden soll, sondern irgendwie modifiziert wird:
${foo:-bar} usw. usf.

Es ist syntaktisch nie falsch, die geschweiften Klammern zu setzen,
auch wenn sie nicht notwendig sind.  Ob man jetzt PATH=/foo:$PATH
oder PATH=/foo:${PATH} schreibt, ist reine Geschmackssache.


--
[1] Na gut, es gibt einen Fall, aber der ist exotisch, nicht in der
    bash, und ich will hier nicht unnoetig verwirren.

-- 
Christian "naddy" Weisgerber                          naddy@xxxxxxxxxxxx
-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/