Durante l'esecuzione di uno script, voglio creare un file temporaneo in /tmp
directory.
Dopo l'esecuzione di quello script, quello verrà pulito da quello script.
Come farlo nello script della shell?
Risposta accettata:
tmpfile=$(mktemp /tmp/abc-script.XXXXXX)
: ...
rm "$tmpfile"
Puoi assicurarti che un file venga eliminato quando lo script esce (inclusi kill e arresti anomali) aprendo un descrittore di file nel file ed eliminandolo. Il file rimane disponibile (per lo script; non proprio per altri processi ma /proc/$PID/fd/$FD
è una soluzione alternativa) purché il descrittore di file sia aperto. Quando viene chiuso (cosa che il kernel fa automaticamente all'uscita del processo) il filesystem cancella il file.
tmpfile=$(mktemp /tmp/abc-script.XXXXXX)
exec 3>"$tmpfile"
rm "$tmpfile"
: ...
echo foo >&3