2010-03-22 99 views

回答

172

變量'$$'包含PID。

38

使用$BASHPID$$

更多信息,請參見manual,包括兩者之間的差異。

+10

請注意,$$和BASHPID並不總是同樣的事情 - 手動提到這裏有一個更具體的例子:http:區別可能非常重要,因爲許多bash構造都在子殼中運行。 – Cascabel 2010-03-22 16:00:07

+0

@Jefromi - 指出。這是我與手冊相關的原因之一。 – tvanfosson 2010-03-22 16:14:42

+0

需要注意的是'BASHPID'是BASH 4的新增功能。如果您使用的是BASH 3.x,則必須使用'$$' – 2017-10-19 03:59:22

2

您可以使用$$變量。

5

PID存儲在$$。例如:kill -9 $$將終止它從中調用的shell實例。

+0

'kill -9'(帶有「-9」標誌)被認爲是是有害的,只有在絕對必要時才能使用)。 – 2015-09-15 15:01:34

+0

它被認爲是「危險的」,因爲這個過程沒有機會對信號作出反應(並且可能在自身之後進行清理)。做'kill -9 $$'只會做1件事。它殺死了**當前的shell進程**。如果你在shell會話中做了一些你不想寫入'.bash_history'的東西,這很有用。例如:'docker run -e PASSWORD = hunter2 ircbot' – 2017-10-19 04:05:26

25

除了通過Jefromi引用的Advanced Bash Scripting Guide給出的例子,這些例子表明管道如何創建子shell:

$ echo $$ $BASHPID | cat - 
11656 31528 
$ echo $$ $BASHPID 
11656 11656 
$ echo $$ | while read line; do echo $line $$ $BASHPID; done 
11656 11656 31497 
$ while read line; do echo $line $$ $BASHPID; done <<< $$ 
11656 11656 11656 
+0

你能解釋一下「<<<」是什麼意思?謝謝。 – 2014-03-29 20:27:14

+3

它將一個字符串重定向到循環中(或讀取「stdin」的任何內容)。該字符串被稱爲「這裏字符串」。 – 2014-03-29 21:29:57