POSIX vs. bashism? ($VAR vs. ${VAR})
Jan-Benedict Glaw
jbglaw at lug-owl.de
Wed Jul 7 15:33:33 CEST 2004
On Wed, 2004-07-07 14:52:19 +0200, Maximilian Wilhelm <max at rfc2324.org>
wrote in message <20040707125218.GC547 at rfc3514.org>:
> Folgender Kommentar zu ner CVS-Aenderung von mir uebersteig mein Wissen,
> kann einer der Experten fuer Erleuchtung sorgen? :-)
>
> | > -if [ -z "$MSG" ] ; then
> | > +if [ -z "${MSG}" ] ; then
> |
> | This change do not match the commit log. Do you know if this notation
> | is POSIX compliant? I use "$VAR" instead of "${VAR}" because I
> | believe the former is POSIX while the latter is a bashism. Do you
> | know if I am right?
Zumindest ist es SuSv3-compliant. In der Schreibweise $MSG versucht
die Shell, den Variablen-Bezeichner möglichst lang zu wählen:
jbglaw at min:~$ M=h
jbglaw at min:~$ ME=i
jbglaw at min:~$ MES=j
jbglaw at min:~$ echo $MES
j
Allersings hätte ich zurecht auch die Ausgabe "hES" oder "iS" erwarten
dürfen (wird aber nicht ausgegeben, da die Länge zählt:)
Wenn man ganz deutlich machen will, was man denn haben mag, dann kann
man die geschweiften Klammern benutzen; normalerweise werden die zwar
eingesetzt, um Ausdrücke auf Variablen anzuwenden (Stückweises ersetzen,
löschen, ...), aber eben auch, ohne eine echte "aktive" Ersetzung
zu machen:
jbglaw at min:~$ echo ${ME}S
iS
Im Fall da oben ist das also gleichwertig; es erhöht aber IMHO die
Lesbarkeit an einigen Stellen, wenn mit vielen einzelnen Variablen
hintereinander gearbeitet wird.
MfG, JBG
--
Jan-Benedict Glaw jbglaw at lug-owl.de . +49-172-7608481
"Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg
fuer einen Freien Staat voll Freier Bürger" | im Internet! | im Irak!
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20040707/32c093e1/attachment.sig>
More information about the Linux
mailing list