Mientras ejecuto un script, quiero crear un archivo temporal en /tmp
directorio.
Después de la ejecución de ese script, ese script lo limpiará.
¿Cómo hacer eso en el script de shell?
Respuesta aceptada:
tmpfile=$(mktemp /tmp/abc-script.XXXXXX)
: ...
rm "$tmpfile"
Puede asegurarse de que un archivo se elimine cuando finalicen los scripts (incluidos los bloqueos y bloqueos) abriendo un descriptor de archivo para el archivo y eliminándolo. El archivo se mantiene disponible (para el script; no realmente para otros procesos pero /proc/$PID/fd/$FD
es una solución alternativa) siempre que el descriptor de archivo esté abierto. Cuando se cierra (lo que hace el kernel automáticamente cuando el proceso finaliza), el sistema de archivos elimina el archivo.
tmpfile=$(mktemp /tmp/abc-script.XXXXXX)
exec 3>"$tmpfile"
rm "$tmpfile"
: ...
echo foo >&3