【问题标题】:mktemp with extension without specifying file path带扩展名的 mktemp 未指定文件路径
【发布时间】:2017-04-06 15:11:41
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: bash mktemp


    【解决方案1】:

    如果你使用 openBSD mktemp 你可以

    STACKS="$(mktemp XXXXXX).json"
    

    然后写一个trap,以便脚本完成时删除tmp:

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

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

    【讨论】:

    • 我得到以下信息; mktemp: illegal option -- - usage: mktemp [-d] [-q] [-t prefix] [-u] template ... mktemp [-d] [-q] [-u] -t prefix
    • 你用的是什么外壳?你确定这是 bash 吗?另外,mktemp --version 说了什么?
    • 是的 bash (刚刚检查 echo $0 确认),并且 mktemp --version 给了我同样的错误,illegal option -- -
    • mktemp -V 怎么样?或-v?我相信您使用的是来自 openBSD 的 mktemp,而不是来自 GNU Coreutils 的 mktemp
    • -V 和 -v 都给我非法选项错误,这是否支持你的理论?
    猜你喜欢
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 2019-09-30
    相关资源
    最近更新 更多