Наступний фрагмент безпечно створить тимчасовий каталог ( -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>