Während ich ein Skript ausführe, möchte ich eine temporäre Datei in /tmp
erstellen Verzeichnis.
Nach der Ausführung dieses Skripts wird es von diesem Skript bereinigt.
Wie macht man das im Shell-Skript?
Akzeptierte Antwort:
tmpfile=$(mktemp /tmp/abc-script.XXXXXX)
: ...
rm "$tmpfile"
Sie können sicherstellen, dass eine Datei gelöscht wird, wenn das Skript beendet wird (einschließlich Kills und Abstürzen), indem Sie einen Dateideskriptor für die Datei öffnen und ihn löschen. Die Datei bleibt verfügbar (für das Skript; nicht wirklich für andere Prozesse, aber /proc/$PID/fd/$FD
ist eine Problemumgehung), solange der Dateideskriptor geöffnet ist. Wenn es geschlossen wird (was der Kernel automatisch tut, wenn der Prozess beendet wird), löscht das Dateisystem die Datei.
tmpfile=$(mktemp /tmp/abc-script.XXXXXX)
exec 3>"$tmpfile"
rm "$tmpfile"
: ...
echo foo >&3