自動的にファイル名にランダム文字列をつけてくれるのでファイル名が衝突しない。
使用例
#!/bin/bash tmpfile=$(mktemp -p /tmp tmp.XXXXXXXXXX) \ || { echo 1>&2 "Failed to create tmpfile"; exit 1; } # 最後にファイルを消す trap "cd /tmp && test -f '$(basename "$tmpfile")' && rm -f '$(basename "$tmpfile")'" 0 ls /tmp/* # /tmp/tmp.KRMooxxxxxx だったり # /tmp/tmp.GXE5Exxxxxx だったり...
使用例2
#!/bin/bash function make_temp_files() { local ret ret=0 { tmp_dir=$(mktemp -p /tmp -d tmp.XXXXXXXXXX) \ && tmp_file1=$(mktemp -p "${tmp_dir}" tmp.XXXXXXXXXX) \ && tmp_file2=$(mktemp -p "${tmp_dir}" tmp.XXXXXXXXXX); } || ret=1 readonly tmp_dir tmp_file1 tmp_file2 trap "cd /tmp \ && test -d '$(basename "${tmp_dir}")' \ && rm -rf '$(basename "${tmp_dir}")'" 0 return ${ret} } make_temp_files || { echo 1>&2 "Failed to create tmp_dir"; exit 1; }