В shell-скриптах часто нужен временный файл: сохранить вывод, собрать промежуточный конфиг или передать данные другой команде.
Плохой вариант выглядит так:
tmp="/tmp/app.log"
echo "data" > "$tmp"
Проблема в том, что такое имя может уже существовать. В худшем случае скрипт перезапишет чужой файл или начнёт работать с тем, что создал другой процесс.
Чуть лучше, но всё ещё не идеально:
tmp="/tmp/app-$$.log"
$$ добавляет PID процесса, но это не полноценная защита от гонок и предсказуемых имён.
Нормальный способ — mktemp:
tmp="$(mktemp)"
Команда создаёт уникальный файл и сразу возвращает путь к нему:
echo "data" > "$tmp"
cat "$tmp"
А чтобы временный файл точно удалился при выходе из скрипта, добавляют trap:
tmp="$(mktemp)"
trap 'rm -f "$tmp"' EXIT
mktemp убирает риск конфликтов имён и делает временные файлы безопаснее. Для скриптов это маленькая привычка, которая спасает от очень неприятных багов.
➡️ DevOps Ready | #совет
