Frage zum Ausdrucken von PDF Dateien

Ulf Rompe ulf.buntu at rompe.org
Don Apr 23 09:06:42 BST 2009


Am Donnerstag, den 23.04.2009, 09:23 +0200 schrieb Michael
Kleinschnitker:
> > eval pdfjoin --outfile $dir/print-$1 sdsingle_{1..$2}.pdf
> 
> Was genau macht das eval am Anfang der Zeile ?

Es evaluiert die Zeile ein weiteres Mal. Das wird eben dann benötigt,
wenn Du geschachtelte Statements hast, die mit einem einzigen Durchlauf
des Parsers nicht komplett aufgelöst werden könnten, beispielsweise
Shell-Syntax in einer Variable:

var1=bla
var2='$var1'
echo $var2
# Schreibt "$var1"
eval echo $var2
# Schreibt "bla"

"eval" wird oft verteufelt, weil es einige Gefahren birgt, wenn man es
in Scripts auf Variablen ansetzt, die von Aufrufern beliebig editiert
werden können. In Deinem Fall könnte man also das Script zu einer
krassen Fehlfunktion verleiten, indem man es so aufruft:

/home/ur/bin/PDF-Verkleinern test.pdf '10; rm -rf /wichtiger/pfad;'

Das ist natürlich völlig sinnfrei, weil Du durch den Aufruf des Scripts
keine anderen User-Rechte erlangen kannst. In anderen Sprachen kann das
aber durchaus der Fall sein, und speziell bei Web-Applikationen
verbietet sich der Einsatz von "eval" in vielen Fällen, um die
Einschleusung von Code zu vermeiden.

Bei Deinem Script sehe ich aber kein Gefahrenpotential.

[x] ulf
-- 
Nur wer selbst brennt, kann Feuer in anderen entfachen. (Augustinus)