2017-04-06 109 views
0

這樣做的前提是我找到了相同的問題,但是他們都沒有爲我工作的答案。帶擴展名的mktemp沒有指定文件路徑

我需要製作一個臨時.json文件(它需要是json,因爲我將在稍後的腳本中使用jq)。

我基礎上,答案this question,這將是如下的思考,但他們創造分別命名爲.jsonXXXXXXXX.json文件。

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

這將需要在mac OS和Linux機器上運行。 我無法指定文件的路徑,因爲它將在本地和由詹金斯運行,它們具有不一致的文件結構。什麼是適當的語法?

回答

2

如果你正在使用的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