shell variablen $(VARNAME) oder $VARNAME in configure.in
-
Hallo NG
weil mir auffällt, das in configure.in alle Variablen folgendermaßen geschreiben sind
$(VARNAME)
wüßte ich gerne worin sich die shell Variante (bash)
$VARNAME
unterscheidet. Oder sollte man in der Shell auch die Klammerversion benutzten?
Grüße
BlackPepper
-
Also $() gibt es in sh gar nicht, in bash ruft $() eine Subshell auf und würde VARNAME ausführen (in sh geschieht das mit `VARNAME`). Auch ist mir in configure.in bisher nur $VARNAME untergekommen.
Zeig doch mal so eine configure.in her in der $() benutzt wird.
-
Hallo Linux-Profi
folgende Zeile stammt aus einem configure.in
CPPFLAGS="$CPPFLAGS -I$(top_srcdir)/../linux-2.6.17.14-rtai3.4/include"
Ich wüßte gerne welchen unterschied es in zwichen der Klammerversion $(VARNAME) und $VARNAME gibt. In der GNU Manpage hab ich dazu keine Aussage gefunden. Und in der Bash man page auch nicht.
Gruß,
BlackPepper
-
BlackPepper schrieb:
Hallo Linux-Profi
folgende Zeile stammt aus einem configure.in
CPPFLAGS="$CPPFLAGS -I$(top_srcdir)/../linux-2.6.17.14-rtai3.4/include"
Ich wüßte gerne welchen unterschied es in zwichen der Klammerversion $(VARNAME) und $VARNAME gibt. In der GNU Manpage hab ich dazu keine Aussage gefunden. Und in der Bash man page auch nicht.
Gruß,
BlackPepperDa wird ein Kommando aufgerufen namens top_srcdir, schau mal ob es zufällig eine Funktion gibt die so heißt. Es handelt sich dabei also nicht um eine Variable und die Ausgabe des Kommandos wird an der Stelle des Aufrufes in den String eingefügt.
Du kannst ja mal folgendes ausprobieren:
TEST_VAR="$(echo hello)" echo $TEST_VAR
-
Danke für die Info. Das $(VARNAME) VARNAME in einer Subshell ausführt wußte ich nicht.
Schönes Wochenende,
BlackPepper
-
man bash
erklärt solche Sachen ausführlich, außerdem würde ich lieber ${VARNAME} anstall $VARNAME verwenden. Es gibt einige Vorteile von ${VARNAME} gegenüber $VARNAME:- du willst ABC_DEF ausgeben, ABC ist in CONFIG
CONFIG="ABC_" echo $CONFIGDEF
uupps, da wird nur was leeres ausgegeben, weil CONFIGDEF nicht definiert ist.
CONFIG="ABC_" echo ${CONFIG}DEF
da kommt ABC_DEF
- Parameter expantion funktioniert auch nur mit {}
CONFIG="abcd=23" echo ${CONFIG#abcd=}
Ausgabe: 23
-
Die {}-Notation hat nur in den von dir beschriebenen Fällen einen Vorteil und das erste Beispiel ist ja "lachhaft", da kommt wohl kein Programmierer drauf, dass das gehen könnte.
Was man immer tun sollte ist seine Variablen in "" einbetten, damit man keine Probleme mit Whitespace bekommt.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.