Bash eval
Version vom 3. Juni 2023, 10:39 Uhr von Thomas.will (Diskussion | Beiträge) (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…“)
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 Programmer's Manual" beschrieben: http://www.unix.com/man-page/posix/1posix/eval/
Erklärung
e*val - Konstruiert einen Befehl durch Verkettung von Argumenten
- 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:
- foo=10 x=foo # 1
- y='$'$x # 2
- echo $y # 3
- $foo
- eval y='$'$x # 5
- echo $y # 6
- In der ersten Zeile wird die Variable $foo mit dem Wert '10' und $x mit dem Wert 'foo' definiert.
- Anschließend wird die Variable $y als Zeichenkette '$foo' definiert, wobei das Dollarzeichen mit '$' maskiert wird.
- Um das Ergebnis zu überprüfen, wird der Befehl echo $y ausgeführt.
- 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'.