Следующий фрагмент безопасно создаст временный каталог ( -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>