带有扩展名的 MKTEMP,无需指定文件路径



开头是我发现了相同的问题,但没有一个答案对我有用。

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

根据这个问题的答案,我认为它会是以下内容,但他们正在分别创建名为.jsonXXXXXXXX.json的文件。

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

这将需要在Mac OS和Linux盒子上运行。我无法指定文件的路径,因为它将在本地运行并由具有不同文件结构的 Jenkins 运行。正确的语法是什么?

如果你使用的是openBSDmktemp

你可以
STACKS="$(mktemp XXXXXX).json"

然后编写一个trap以便在脚本完成时删除 TMP:

function cleanup {
if [ -f "$STACKS" ] && [[ "$STACKS" =~ ".json"$ ]]; then
rm -f "$STACKS"
fi
}
trap cleanup EXIT

因此,当脚本完成时(无论如何),如果它是一个文件并且是否以.json结尾(为了额外的安全性),它将尝试删除$STACKS

最新更新