Bash eval: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
Zeile 3: Zeile 3:
*Es wird in der "POSIX Programmer's Manual" beschrieben: http://www.unix.com/man-page/posix/1posix/eval/
*Es wird in der "POSIX Programmer's Manual" beschrieben: http://www.unix.com/man-page/posix/1posix/eval/
=Erklärung=
=Erklärung=
*eval - Konstruiert einen Befehl durch Verkettung von Argumenten
==Belegen der Variable==
*Es nimmt ein Argument entgegen und erstellt daraus einen Befehl, der dann von der Shell ausgeführt wird. Hier ist ein Beispiel aus der Manpage:
*Wir belegen die Variable GEFAES mit dem Wert $GLAS.
 
*Das \ ist notwendig damit die Shell die Variable nicht auswertet
*foo=10 x=foo    # 1
*'''GEFAES=\$GLAS'''
*y='$'$x        # 2
*Wir belegen die Variable GLAS mit dem Wert bier.  
*echo $y        # 3
==Ausgeben der Variable==
*$foo
*Wie erwartet wird $GLAS zurückgegeben
*eval y='$'$x    # 5
*'''echo $GEFAES'''
*echo $y        # 6
$GLAS
 
==Einsatz von eval==
*In der ersten Zeile wird die Variable $foo mit dem Wert '10' und $x mit dem Wert 'foo' definiert.  
*Wenn wir nun eval nutzen wertet die Shell den Ausdruck zweimal aus.
*Anschließend wird die Variable $y als Zeichenkette '$foo' definiert, wobei das Dollarzeichen mit '$' maskiert wird.
*'''eval echo $GEFAES'''
*Um das Ergebnis zu überprüfen, wird der Befehl echo $y ausgeführt.
bier
*Die Ausgabe von Zeile 1 bis 3 wird die Zeichenkette '$foo' sein.
*Dann wird die Zuweisung mit eval wiederholt.  
*Zuerst wird $x zu der Zeichenkette 'foo' ausgewertet.
*Jetzt haben wir die Anweisung y=$foo, die zu y=10 ausgewertet wird.
*Die Ausgabe von echo $y ist nun der Wert '10'.

Aktuelle Version vom 3. Juni 2023, 19:56 Uhr

Was ist das?

Erklärung

Belegen der Variable

  • Wir belegen die Variable GEFAES mit dem Wert $GLAS.
  • Das \ ist notwendig damit die Shell die Variable nicht auswertet
  • GEFAES=\$GLAS
  • Wir belegen die Variable GLAS mit dem Wert bier.

Ausgeben der Variable

  • Wie erwartet wird $GLAS zurückgegeben
  • echo $GEFAES
$GLAS

Einsatz von eval

  • Wenn wir nun eval nutzen wertet die Shell den Ausdruck zweimal aus.
  • eval echo $GEFAES
bier