Lors de l'exécution d'un script, je souhaite créer un fichier temporaire dans /tmp
répertoire.
Après l'exécution de ce script, cela sera nettoyé par ce script.
Comment faire cela en script shell ?
Réponse acceptée :
tmpfile=$(mktemp /tmp/abc-script.XXXXXX)
: ...
rm "$tmpfile"
Vous pouvez vous assurer qu'un fichier est supprimé lorsque les scripts se terminent (y compris les kills et les plantages) en ouvrant un descripteur de fichier vers le fichier et en le supprimant. Le fichier reste disponible (pour le script; pas vraiment pour les autres processus mais /proc/$PID/fd/$FD
est une solution de contournement) tant que le descripteur de fichier est ouvert. Lorsqu'il est fermé (ce que le noyau fait automatiquement lorsque le processus se termine), le système de fichiers supprime le fichier.
tmpfile=$(mktemp /tmp/abc-script.XXXXXX)
exec 3>"$tmpfile"
rm "$tmpfile"
: ...
echo foo >&3