Следующий фрагмент безопасно создаст временный каталог ( -d) и сохранит его имя в TMPDIR. (Пример использования TMPDIRпеременной показан ниже в коде, где она используется для хранения исходных файлов, которые могут быть изменены).
Первая trapстрока выполняет exit 1команду при получении любого из указанных сигналов . Вторая trapстрока удаляет (очищает) выход $TMPDIRиз программы (как нормальный, так и ненормальный). Мы инициализируем эти ловушки после того, как проверим, что mkdir -dудалось избежать случайного выполнения ловушки выхода с $TMPDIRнеизвестным состоянием.
#!/bin/bash
# Create a temporary directory and store its name in a variable ...
TMPDIR=$(mktemp -d)
# Bail out if the temp directory wasn't created successfully.
if [ ! -e $TMPDIR ]; then
>&2 echo "Failed to create temp directory"
exit 1
fi
# Make sure it gets removed even if the script exits abnormally.
trap "exit 1" HUP INT PIPE QUIT TERM
trap 'rm -rf "$TMPDIR"' EXIT
# Example use of TMPDIR:
for f in *.csv; do
cp "$f" "$TMPDIR"
# remove duplicate lines but keep order
perl -ne 'print if ++$k{$_}==1' "$TMPDIR/$f" > "$f"
done
mktemp -d -t <prefix>