Bash eval: Unterschied zwischen den Versionen
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…“) |
|||
| 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 | |
*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: | *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: | ||
Version vom 3. Juni 2023, 10:42 Uhr
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
- eval - 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'.