Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
lisan
- Beiträge: 658
- Registriert: 22.02.2003 19:05:04
- Wohnort: Berlin
-
Kontaktdaten:
Beitrag
von lisan » 09.06.2008 17:35:46
Hi,
ich verstehe das folgende script nicht:
Code: Alles auswählen
#!/bin/bash
test="foobar"
declare $test="barfoo"
echo $test
echo ${!test}
walter3@wks-arvid:~$ sh ./test.sh
foobar
barfoo
Was bedeutet der Ausdruck ${!test} in bezug zu der Variablen test ?
-
FitzeFatze
- Beiträge: 834
- Registriert: 06.07.2004 10:08:21
Beitrag
von FitzeFatze » 09.06.2008 17:40:22
genau sagen kann ichs dir nicht, da ich nicht shellscripten kann, aber ein "!" bedeutet normalerweise immer ein ungleich.
-
Meillo
- Moderator
- Beiträge: 9254
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 09.06.2008 17:45:05
mit 'declare' wird explizit ein Array angelegt. Es scheint, als gäbe es dann zwei Variablen 'test': einmal als Skalar und einmal als Array.
Das erste `echo' greift ganz normal auf den Skalar zu. Das zweite auf das Array.
siehe: man bash
(aber so ganz klar verständlich ist das da IMO auch nicht)
Use ed once in a while!
-
lisan
- Beiträge: 658
- Registriert: 22.02.2003 19:05:04
- Wohnort: Berlin
-
Kontaktdaten:
Beitrag
von lisan » 09.06.2008 18:17:57
hat sich erledigt.
Hm, schwer zu erklaeren. Scheint eine art zeigerersaetz zu sein.
Beispiel:
Code: Alles auswählen
#!/bin/bash
bla="a"
test_a=42
TEST="test_${bla}"
TEST="${!TEST}"
!TEST referenziert nicht test_a sondern den Wert von test_a also *test_a (c analogon).
Brrrrr.