带扩展名的 mktemp 不指定文件路径
mktemp with extension without specifying file path
在此之前我发现了相同的问题,但其中 none 的答案对我有用。
我需要制作一个临时 .json 文件(它必须是 json 因为我稍后会在脚本中使用 jq ).
我根据 this question 的答案认为应该是以下内容,但他们正在分别创建名为 .json
和 XXXXXXXX.json
的文件。
STACKS=$(mktemp .json)
STACKS=$(mktemp XXXXXXXX.json)
这将需要在 mac OS 和 linux 框上 运行。 我无法为文件指定路径,因为它在本地和 Jenkins 中都是 运行,它们具有不同的文件结构。正确的语法是什么?
如果您使用的是 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
结尾(为了额外的安全)。
在此之前我发现了相同的问题,但其中 none 的答案对我有用。
我需要制作一个临时 .json 文件(它必须是 json 因为我稍后会在脚本中使用 jq ).
我根据 this question 的答案认为应该是以下内容,但他们正在分别创建名为 .json
和 XXXXXXXX.json
的文件。
STACKS=$(mktemp .json)
STACKS=$(mktemp XXXXXXXX.json)
这将需要在 mac OS 和 linux 框上 运行。 我无法为文件指定路径,因为它在本地和 Jenkins 中都是 运行,它们具有不同的文件结构。正确的语法是什么?
如果您使用的是 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
结尾(为了额外的安全)。