Bash eval: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Was ist das?= *Es handelt sich dabei um eine Schnittstelle, die als integriertes Kommando in der Shell implementiert sein kann. *Es wird in der "POSIX Program…“)
 
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
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=
e*val - 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, 17: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