2017-04-06 16 views
0

これを先に書いて、私は同じ質問を見つけましたが、誰も私のために働いている回答はありません。ファイルパスを指定しないで拡張子をつけたmktemp

私は一時的な.jsonファイルを作成する必要があります(これはjsonとする必要があります。後でスクリプトで作業するためです)。

this questionの回答に基づいて、以下のように考えましたが、それぞれ.jsonXXXXXXXX.jsonという名前のファイルを作成しています。

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

これは、Mac OSとLinuxボックスの両方で実行する必要があります。 ファイルのパスは、ローカルでも、Jenkins(同じファイル構造でもない)でも実行されるため、パスを指定できません。適切な構文は何ですか?

答えて

2

あなたが

STACKS="$(mktemp XXXXXX).json" 

をすることができ、その後、スクリプトが終了するときにTMPSが削除されているtrap書くmktemp OpenBSDのを使用している場合:

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

ので、スクリプトが終了したときに(どんなに)それをファイルであれば$STACKSを削除しようとし、末尾が.json(余分な安全性を確保するため)であれば削除します。

+0

次のようになります。 'mktemp:illegal option - - 用法:mktemp [-d] [-q] [-t接頭辞] [-u]テンプレート... mktemp [-d] [-q] [-u] -t接頭辞' – Alex

+0

あなたはどのシェルを使用していますか?あなたはポジティブなのですか?また、mktemp --versionは何を表していますか? – odradek

+0

はいbash(確認するには 'echo $ 0'でチェックしただけです)、mktemp --versionは私に' 'mktemp -V''と同じエラー、' 'illegal option --''などを返します。 – Alex

関連する問題