带扩展名的mktemp没有指定文件路径

问题描述:

这样做的前提是我找到了相同的问题,但是他们都没有为我工作的答案。带扩展名的mktemp没有指定文件路径

我需要制作一个临时.json文件(它需要是json,因为我将在稍后的脚本中使用jq)。

我基础上,答案this question,这将是如下的思考,但他们创造分别命名为.jsonXXXXXXXX.json文件。

STACKS=$(mktemp .json) 
STACKS=$(mktemp XXXXXXXX.json) 

这将需要在mac OS和Linux机器上运行。 我无法指定文件的路径,因为它将在本地和由詹金斯运行,它们具有不一致的文件结构。什么是适当的语法?

如果你正在使用的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结尾(为了额外的安全性)。

+0

我得到以下; 'mktemp:非法选项 - - 用法:mktemp [-d] [-q] [-t前缀] [-u]模板... mktemp [-d] [-q] [-u] -t前缀' – Alex

+0

你在用什么外壳?你是积极的吗?另外,mktemp --version是什么意思? – odradek

+0

是bash(刚刚用'echo $ 0'确认),而mktemp --version给我同样的错误,'illegal option - -'等 – Alex