Next: read-Kommando Up: Spezielle Probleme und Kommandos Previous: Abfangen von Signalen
eval-Kommando
Die Argumente des eval-Kommandos werden als Kommando betrachtet und ausgeführt.
-
Notation:
eval arg1 ... argn -
Beispiel:
#!/bin/sh # # Kopieren von Filebaeumen in ein Zielverzeichnis # Aufruf: copytree verzeichnis1 [verzeichnis2 ... ] ziel_verzeichnis # eval 'last=$'$# while [ $# -gt 1 ] do echo "copy from $1 to $last" (cd $1; tar cf - .) | (cd $last; tar xf -) shift done
-
Bemerkung:
-
eval notwendig, um zweistufige Auswertung zu erzwingen:
1. $# wird ersetzt durch Argumentzahl
2. Zuweisung des Zeichenkettenwertes des letzten Argumentes an die Variable last!!
- Das Kommando tar -xf - . bewirkt, daß von der Standardeingabe (-), d.h. der Pipe gelesen und auf das aktuelle Verzeichnis geschrieben wird.
- Die Konsequenz dieser Pipeline besteht darin, daß alle Files des Ausgangsverzeichnisses kopiert werden. Das Starten zweier Sub-Shells ist notwendig, um mit ,,zwei`` aktuellen Verzeichnissen arbeiten zu können.
-
eval notwendig, um zweistufige Auswertung zu erzwingen: