Как я могу создать временный файл с определенным расширением в ударе?

Я пишу сценарий оболочки, и я должен создать временный файл с определенным расширением.

Я попробовал

tempname=`basename $0`
TMPPS=`mktemp /tmp/${tempname}.XXXXXX.ps` || exit 1

и

tempname=`basename $0`
TMPPS=`mktemp -t ${tempname}` || exit 1

никакая работа, поскольку первое создает имя файла с литералом "XXXXXX" и вторым, не дает опцию для расширения.

Мне нужно расширение так, чтобы предварительный просмотр не отказывался открывать файл.

Править: Я закончил тем, что шел с комбинацией pid и mktemp в том, что я надеюсь, безопасно:

tempname=`basename $0`
TMPTMP=`mktemp -t ${tempname}` || exit 1
TMPPS="$TMPTMP.$$.ps" 
mv $TMPTMP $TMPPS || exit 1

Это уязвимо для атаки "отказ в обслуживании", но я не думаю ничто более серьезное.

16
задан cobbal 10 March 2010 в 19:42
поделиться