我曾经读过,在shell中获取临时文件的唯一文件名的一种方法是使用双美元符号($$
)。这确实会产生一个随时间变化的数字...但如果您重复调用它,它将返回相同的数字。(解决方案就是利用时间。)
我很想知道$$
到底是什么,以及为什么建议使用它来生成唯一的文件名。
发布于 2008-09-17 00:02:14
在Bash中,$$
是进程ID,在注释中指出,由于各种原因,使用它作为临时文件名是不安全的。
对于临时文件名,请使用mktemp
命令。
发布于 2008-09-17 00:13:44
$$
是bash中的进程ID (PID)。使用$$
不是一个好主意,因为它通常会造成竞争条件,并允许攻击者破坏您的shell脚本。例如,查看创建不安全临时文件并必须发布安全建议的所有these people。
相反,请使用mktemp
。Linux man page for mktemp非常棒。下面是其中的一些示例代码:
tempfoo=`basename $0`
TMPFILE=`mktemp -t ${tempfoo}` || exit 1
echo "program output" >> $TMPFILE
发布于 2008-09-17 00:01:48
$$是当前进程的id。
https://stackoverflow.com/questions/78493
复制相似问题