带扩展名的mktemp,不指定文件路径

时间:2017-04-06 15:11:42

标签: bash mktemp

将其与我发现相同的问题但我们没有找到适用于我的答案。

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

我根据this question的答案认为它会是以下内容,但他们分别创建了名为.jsonXXXXXXXX.json的文件。

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

这需要在mac OS和linux机器上运行。 我无法指定文件的路径,因为它将在本地和Jenkins运行,它们具有不同的文件结构。什么是正确的语法?

1 个答案:

答案 0 :(得分:3)

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