Syndicate
Site (RSS, Atom)
Contact
Weblog status
Total entries: 78
Last entry: 2022-10-16 13:52:24
Last updated: 2022-10-16 14:12:58
powered by vim, bash, cat, grep, sed, and nb 3.4.2

2011-11-30 22:15:57

Indirekte Variablenzuweisung mit "eval"

Das Shell-Builtin "eval" bewertet Ausdrücke bzw. führt Befehle aus. Einfaches Beispiel:

$ unset A
$ echo $A

$ eval A=1
$ echo $A
1

Da die Shell vor Ausführen von eval wie auch bei jeder anderen Kommandozeile erst die üblichen Ersetzungen (Variablen, Commands etc.) macht, kann man auch folgendes machen:

$ B=A
$ eval $B=2
$ echo $A
2

Und wenn man ganz verrückte Sachen machen will, wie beispielsweise in einem Script mehrere Variablen in einer Schleife auf die gleiche Weise zu verändern, dann sieht das so aus:

$ U=a
$ for i in U;do eval $i=\"\$$i X\";done;echo $U
a X
$ for i in U;do eval $i=\"\$$i X\";done;echo $U
a X X
$ for i in U;do eval $i=\"\$$i X\";done;echo $U
a X X X

Posted by Frank W. Bergmann | Permanent link | File under: shell