首页 / 知识
关于脚本:shell在shell中意味着什么?
2023-04-16 07:17:00

What does $$ mean in the shell?
我曾经读过,在shell中为临时文件获取唯一文件名的一种方法是使用双美元符号(
我很想知道
而是使用
在Bash中,
对于临时文件名,请使用 $$是当前进程的id。 UNIX操作系统中的每个进程都有一个(临时)唯一标识符PID。没有两个进程同时运行可以具有相同的PID,$$指的是运行脚本的bash实例的PID。 从某种意义上说,它绝不是一个独特的识别器,它永远不会被重用(实际上,PID会不断被重用)。它给你的功能是一个数字,如果另一个人运行你的脚本,当你的脚本仍在运行时,他们会得到一个不同的标识符。一旦你死了,PID可以被回收,其他人可能会运行你的脚本,得到相同的PID,所以得到相同的文件名。 因此,只有说"$$给出一个文件名,如果其他人运行相同的脚本,我的实例仍在运行,他们会得到一个不同的名称",这真是理智。 $$是你的PID。它并没有真正生成一个唯一的文件名,除非你小心,没有其他人以完全相同的方式。 通常你会创建像/ tmp / myprogramname $$这样的东西 有很多方法可以解决这个问题,如果你写的是其他人可以写的地方,那么在许多操作系统上预测你将会拥有什么样的PID并且搞砸是不太困难的 - 假设你正在运行以root身份创建/ tmp / yourprogname13395作为指向/ etc / passwd的符号链接 - 然后你写入它。 这在shell脚本中是一件坏事。如果您打算使用临时文件,您应该使用更好的语言,这至少可以让您添加"独占"标志来打开(创建)文件。然后你可以确定你没有破坏别的东西。 让我第二个emk的答案 - 不要将$$本身用作"独特"的任何东西。对于文件,请使用mktemp。对于同一bash脚本中的其他ID,请使用"$$$(日期+%s%N)"以获得相当大的唯一性。
$$是运行脚本的shell的进程ID。有关更多详细信息,请参阅sh或bash的手册页。可以使用命令行"man sh"或通过在Web上搜索"shell manpage"找到手册页 $$是当前shell进程的pid。这不是生成唯一文件名的好方法。 $$是运行脚本的shell解释器的pid(进程ID)。现在在系统上运行的每个进程都不同,但随着时间的推移,pid会回绕,并且在你退出之后将会有另一个具有相同pid的进程。只要你正在运行,pid就是你所独有的。 从上面的定义可以看出,无论您在脚本中使用$$多少次,它都会返回相同的数字。 你可以使用,例如/tmp/myscript.scratch.$$作为临时文件,用于不需要非常可靠或安全的东西。在脚本末尾删除此类临时文件是一种很好的做法,例如使用trap命令:
它是bash进程的进程ID。没有并发进程将具有相同的PID。
|
最新内容
相关内容
linux命令匹配数字?
linux命令匹配数字?,数字,档案,位置,环境,名字,较大,系统,权限,命令,用户,Linux的基本命令格式如何?Linux下经常使用的通配符有哪些通配符 基linux权限数字命令?
linux权限数字命令?,数字,系统,地址,权限,命令,标准,情况,管理,基础,文件,linux734是什么权限1、linux权限从左至右,第一位数字代表文件所有者linux脚本多个命令?
linux脚本多个命令?,系统,工作,标准,服务,命令,软件,管理,连续,电脑,设备,linux脚本如何一键授权并执行1、chmod u+x file,如果只给文件所有者linux脚本注释命令?
linux脚本注释命令?,代码,系统,工作,名称,地方,脚本,命令,信息,状态,简介,linux脚本里的#! 是什么意思1、方法一:切换到shell脚本所在的目录(此脚本运行linux命令?
脚本运行linux命令?,系统,环境,工具,工作,位置,底部,代码,发行,官网,终端,linux下shell脚本命令PS1 主提示符,在特权用户下,默认的主提示符是#,在linux命令下写脚本?
linux命令下写脚本?,服务,系统,环境,代码,名称,命令,脚本,发行,在线,情况,三个简单Linux的shell脚本程序编写Shell编程实战 实现文件备份 文件linux把命令变成脚本?
linux把命令变成脚本?,系统,环境,工作,脚本,命令,信息,基础,代码,文件,变量,如何编写简单的Shell脚本文件之Linux的基本操作1、在开始Shell编脚本调用linux命令?
脚本调用linux命令?,代码,系统,工作,底部,脚本,位置,环境,行用,官网,标准,typescript脚本中怎样运行Linux命令?1、Script可用于记录当前用户的linux脚本命令输信息?
linux脚本命令输信息?,系统,信息,代码,脚本,数据,工具,发行,命令,变量,文件,linux下shell脚本命令shell变量调出命令。linux中的shell脚本有多linux命令交换文件名?
linux命令交换文件名?,命令,文件,数据,名称,工具,地址,软件,系统,基础知识,文件名,linux中用什么命令移修改文件夹名1、linux下使用mv命令来移linux上启动脚本命令?
linux上启动脚本命令?,服务,状态,系统,代码,脚本,工作,周期性,命令,文件,方法,Python脚本在Linux下如何自启动与定时任务的实例详解Linux在启linux排序数字命令?
linux排序数字命令?,标准,数字,单位,情况,系统,信息,命令,文件,顺序,参数,linux下用shell编写,键盘输入三个数,按大小排序输出1、这个问题可以