问题描述
我实际上正在玩争论,它发生了。我只是想看看如果我输入$$1
将会发生什么,我做了以下事情。
raja@raja-BONEFISH:~$ $$1
19301: command not found
19301的含义是什么,它是在讲什么?
Bottom-Line:BAB中$$1
的含义是什么?
最佳解决方案
$$
是当前进程的PID(进程ID)。
$$1
是上面的PID,后跟文字字符串1
。
所以它告诉你bash
是PID 1930的过程。
但是……免费技巧:
show() { eval echo \$$1; }
show PATH
/home/romano/bin:/usr/local/bin:/bin:/usr/bin
(相当复杂,不是吗?)
更多信息在TLDP中。
次佳解决方案
-
$$
– 当前shell的pid(不是子shell) – 请参阅What are the special dollar sign shell variables? -
$$1
– 当前shell(不是子shell)的pid,后跟1
。 -
$$2
– 当前shell(不是子shell)的pid,后跟2
。 -
$$a
– 当前shell(不是子shell)的pid,后跟a
字符。 -
等等…
请参阅echo $$1
的输出。
并且您得到错误command not found
,因为您正在尝试执行由数字组成的字符串,这显然不是命令。
第三种解决方案
您已将$$
和1
连接在一起以获取当前shell的PID和1
,即$$
代表当前运行的shell的PID而1
只是一个字符,您可以执行$$a
,$$@
以获得与以下连接的PID字符。
第四种方案
$$它将声明1930
,它是当前shell的pid。
键入$$1
表示pid后跟一个,因此输出将为19301
。
试试$$2
输出将是19302