mktemp с расширением без указания пути к файлу
В преддверии этого я нашел идентичные вопросы, но ни один из них не дал ответов, которые мне подходят.
Мне нужно сделать временный файл.json (это должен быть json, потому что я буду работать с jq позже в скрипте).
Основываясь на ответах на этот вопрос, я подумал, что это будет следующим, но они создают файлы с именем .json
а также XXXXXXXX.json
соответственно.
STACKS=$(mktemp .json)
STACKS=$(mktemp XXXXXXXX.json)
Это нужно будет запускать как на Mac OS, так и на Linux. Я не могу указать путь к файлу, потому что он будет запускаться как локально, так и Jenkins, которые имеют неидентичную файловую структуру. Какой правильный синтаксис?
1 ответ
Если вы используете openBSD mktemp
вы можете
STACKS="$(mktemp XXXXXX).json"
а затем написать trap
поэтому tmps удаляются после завершения скрипта:
function cleanup {
if [ -f "$STACKS" ] && [[ "$STACKS" =~ ".json"$ ]]; then
rm -f "$STACKS"
fi
}
trap cleanup EXIT
поэтому, когда скрипт завершит работу (независимо от того, как) он попытается удалить $STACKS
если это файл и если он заканчивается .json
(для дополнительной безопасности).