首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >$$在外壳中是什么意思?

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

Stack Overflow用户
提问于 2008-09-16 23:59:33
回答 8查看 76.4K关注 0票数 157

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

我很想知道$$到底是什么,以及为什么建议使用它来生成唯一的文件名。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-09-17 00:02:14

在Bash中,$$是进程ID,在注释中指出,由于各种原因,使用它作为临时文件名是不安全的。

对于临时文件名,请使用mktemp命令。

票数 112
EN

Stack Overflow用户

发布于 2008-09-17 00:13:44

$$是bash中的进程ID (PID)。使用$$不是一个好主意,因为它通常会造成竞争条件,并允许攻击者破坏您的shell脚本。例如,查看创建不安全临时文件并必须发布安全建议的所有these people

相反,请使用mktempLinux man page for mktemp非常棒。下面是其中的一些示例代码:

代码语言:javascript
复制
tempfoo=`basename $0`
TMPFILE=`mktemp -t ${tempfoo}` || exit 1
echo "program output" >> $TMPFILE
票数 125
EN

Stack Overflow用户

发布于 2008-09-17 00:01:48

$$是当前进程的id。

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/78493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档