bash中$$1是什么意思?

rɑː*_*dʒɑ 27 bash

我实际上是在玩争论并且它发生了。我只是想看看如果我打字$$1并且我做到了并在下面得到了一些东西会发生什么。

raja@raja-BONEFISH:~$ $$1
19301: command not found
Run Code Online (Sandbox Code Playgroud)

19301 是什么意思,它在说明什么?

底线:$$1在 bash中的含义是什么。

Rma*_*ano 27

$$ 是当前进程的PID(进程ID)。

$$1是上面的PID后跟文字字符串1

所以它告诉你你bash是PID 1930的进程。

但是......免费技巧:

show() { eval echo \$$1; }
show PATH
/home/romano/bin:/usr/local/bin:/bin:/usr/bin
Run Code Online (Sandbox Code Playgroud)

(相当复杂,不是吗?)

TLDP 中的更多信息。


Rad*_*anu 13

  • $$- 当前外壳程序(不是子外壳程序)的 pid - 请参阅什么是特殊的美元符号外壳变量?

  • $$1- 当前外壳程序(不是子外壳程序)的 pid 后跟1.

  • $$2- 当前外壳程序(不是子外壳程序)的 pid 后跟2.

  • $$a- 当前外壳程序(不是子外壳程序)的 pid 后跟a字符。

  • 等等...

见输出echo $$1

您会收到错误消息,command not found因为您正在尝试执行由数字组成的字符串,而这显然不是命令。


job*_*bin 10

您已将$$和连接1在一起以获得当前外壳程序的 PID 和1,即$$代表当前正在运行的外壳程序的 PID 并且1只是一个字符,您可以这样做$$a$$@以获得与以下字符连接的 PID。


nux*_*nux 6

$$ 它将说明1930哪个是当前 shell 的pid

当您键入时$$1,这意味着 pid 后跟一个,因此您的输出将是19301.

尝试$$2输出将是19302