13

我想在 POSIX shell ( /bin/sh) 中创建一个临时文件。

我发现mktemp(1)我的 AIX 机器上不存在它,并且根据mktemp(1) 的便携性如何?,无论如何它都不是那么便携和/或安全。

那么,我应该改用什么?

4

3 回答 3

14

为什么不使用/dev/random

使用 perl 可能会更整洁,但 od 和 awk 会这样做,例如:

tempfile=XXX-$(od -N4 -tu /dev/random | awk 'NR==1 {print $2} {}')
于 2012-04-19T19:30:22.837 回答
3

您没有准确定义“安全”,但其中一个要素可能是自己清理。

trap "rm -f \"$tmpfile\"" 0 1 2 3 15

您可能man 3 signal可以查看是否有其他信号会导致您的临时文件被擦除。零信号意味着“在干净的出口上”。

于 2012-04-23T12:10:28.907 回答
0

从谷歌那里得到便携式 mktemp。我的需求不如 OP 安全,所以我最终只使用了脚本的 PID:

tempx=/tmp/mytemp.$$
于 2018-01-03T03:35:52.847 回答