猿问

$$在外壳中是什么意思?

我曾经读过一种在外壳中为临时文件获取唯一文件名的方法是使用双美元符号($$)。这确实会产生不时变化的数字...但是,如果您反复调用它,它将返回相同的数字。(解决方案是只使用时间。)


我很好奇到底$$是什么,为什么会建议将其作为生成唯一文件名的一种方式。


翻翻过去那场雪
浏览 807回答 3
3回答

绝地无双

$$是bash中的进程ID(PID)。使用$$是个坏主意,因为它通常会创建竞争条件,并允许攻击者破坏您的shell脚本。见,例如,所有这些人谁创建不安全的临时文件,并不得不发布安全公告。而是使用mktemp。mktemp的Linux手册页非常棒。以下是其中的一些示例代码:tempfoo=`basename $0`TMPFILE=`mktemp -t ${tempfoo}` || exit 1echo "program output" >> $TMPFILE
随时随地看视频慕课网APP
我要回答