Ner*_*nux 6 command-line bash echo
为什么运行echo $$
inbash
返回一个数字7190
,而运行echo $
只返回一个$
?
Rin*_*ind 18
习俗。
$$
: 扩展到 shell 的进程 ID。在 () 子shell 中,它扩展为调用shell 的进程ID,而不是子shell(请参阅下面的手册链接)。
rinzwind@schijfwereld:~$ echo $$
3244
rinzwind@schijfwereld:~$ ps -ef |grep 3244
rinzwind 3244 3237 0 19:06 pts/0 00:00:00 /bin/bash
Run Code Online (Sandbox Code Playgroud)
在编码软件时非常有用。它可以用作mktemp
创建临时文件的粗略(将是更好的方法)方式
1$
没有特殊意义,所以它给你回声总是做的事情:返回它。
有一个专门用于此的手册页(3.4.2 特殊参数)。
Rav*_*ina 11
在 bash 中使用我们使用的变量来声明$
,使用$$
第一个美元符号我们是说我想使用一个变量,使用第二个我们告诉该变量的名称实际上是 a $
。它实际上是一个命名约定,这个变量包含当前 shell 的进程 id。
正如您在评论中所问的那样,$$$$
您将两次返回相同的进程 ID。
还有其他变量(从这里):
$1
,$2
,$3
, ... 是位置参数。"$@"
是所有位置参数的类似数组的构造,{$1, $2, $3 ...}
。"$*"
是所有位置参数的 IFS 扩展,$1 $2 $3 ...
。$#
是位置参数的数量。$-
为 shell 设置的当前选项。$$
当前shell(不是子shell)的pid。$_
最近的参数(或启动后立即启动当前 shell 的命令的 abs 路径)。$IFS
是(输入)字段分隔符。$?
是最近的前台管道退出状态。$!
是最近的后台命令的PID。$0
是 shell 或 shell 脚本的名称。