Temporäre Dateien in einem Shellscript

Author: | Posted in Solaris No comments

Erstellt man temporäre Dateien in einem Shellscript, so muss sichergestellt werden, dass kein File mit dem gleichen Namen bereits existiert und das der Filename zufällig gewählt wird, damit man nicht voraussagen kann, wie das File heissen wird (Sicherheit). Seit Solaris 10 liefert Sun dazu mktemp mit, welches ursprünglich für OpenBSD entwickelt wurde. Mktemp erstellt temporäre Dateien mit einem zufälligen Dateinamen.

Ruft man mktemp ohne weiteren Optionen auf, so erstellt es unter /tmp eine Datei und gibt den Namen der Datei zurück:

ihsan@zhadum:~$ mktemp
/tmp/tmp.Tea4Pn
ihsan@zhadum:~$ ls -l /tmp/tmp.Tea4Pn
-rw-------   1 ihsan    staff          0 Apr 27 10:53 /tmp/tmp.Tea4Pn

In einem Shellscript kann mktemp wie folgt benutzt werden:

TMPFILE=`mktemp /tmp/example.XXXXXX`
if [ -z "$TMPFILE" ]; then exit 1; fi
echo "program output" >> $TMPFILE

Wobei man anstatt “example” frei einen Namen wählen kann. Die Zeichenfolge “XXXXXX” wird dabei durch eine zufällige Zeichenfolge erstetzt. Mehr dazu findet man in der mktemp(1) Manpage.

Add Your Comment