Archiv verlassen und diese Seite im Standarddesign anzeigen : expanding entered string
Hi,
I've a problem expanding an entered string
When I enter a text, including a word like an environment I want to expand this environment before echoing the whole input.
Anyone an idea?
You can see the problem following next short inputs:
read a; echo $a // cmd to be entered
test $USER test // enter the data for a
test $USER test // output from the system
I want an output like
test root test
peschmae
29-07-2004, 15:45
Ich verstehe die Frage nicht ganz. Was soll das Zeugs genau machen?
MfG Peschmä
Also,
ich möchte eine String von der Konsole einlesen und in einer Umgebungsvariable speichern.( z.B. read a)
In dem String den ich eingebe ist eine Wort, das mit einem Dollarzeichen beginnt. Dieses Wort soll für sich eine existierende Umgebungsvariable darstellen. (z.B: test $USER test)
Nun möchte ich den eingelesenen String ausgeben, dabei aber den Teil mit der eingegebenen Umgebungsvariablen expandieren.
(also $USER --> nach oler und damit Ausgabe von test oler test)
Ich hoffe jetzt ist es verständlich :-)
oler
peschmae
29-07-2004, 17:54
Ja, jetzt ists klar. Dass da zwei gleiche Zeilen nacheinander waren hat mich irritiert. Und dass du da "test" verwendet hast erst recht (ich dachte du willst was mit dem Programm "test"... :D)
Der wichtige Punkt ist: Variablen werden von der Bash interpretiert. Allerdings - wie du gesehen hast - geschieht dies nicht rekursiv. Nix da mit Variablen in Variablen. Deshalb führst du einfach eine Bash aus, die als auszuführendes Argument den Inhalt von $a kriegt (d.h. die Shell in der du die ganze Zeit bist ersetzt bei dem Aufruf $a durch "irgendwas $USER mit $HOME blubb" - die zusätzlich ausgeführte Bash interpretiert das dann...
read a; echo $a
bash -c "echo $a"
MfG Peschmä
Das Kommando eval ist auch dafuer da:
read a
echo $a
eval echo $a
man bash/man eval:
eval [arg ...]
The args are read and concatenated together into a
single command. This command is then read and exe*
cuted by the shell, and its exit status is returned
as the value of eval. If there are no args, or
only null arguments, eval returns 0.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.