[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: BASH
[Thread Prev] | [Thread Next]
- Subject: Re: BASH
- From: Christian Weisgerber <naddy@xxxxxxxxxxxx>
- Date: Wed, 6 Nov 2013 15:24:42 +0000 (UTC)
- To: uugrn@xxxxxxxxxxxxxxx
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/