Co oznacza „$$” w powłoce?

Odpowiedzi:

14

$$Zmienna bash i inne powłoki zawiera identyfikator procesu powłoki.

Zobacz to pytanie dotyczące przepełnienia stosu, a to także zawiera więcej szczegółów na temat tego, co jest dokładniejsze, i podobne polecenia.

Dennis Kaarsemaker
źródło
+1. Udokumentowane w podręczniku bash
glenn jackman
1

Jak wskazano w drugiej (zaakceptowanej) odpowiedzi, $ param reprezentuje bieżący identyfikator procesu (PID) bieżącej powłoki.

Echo tego parametru powinno działać w większości powłok (nie tylko w Bash):

Grzmotnąć:

$ echo $0
bash
$ echo $$
6780

Kres:

$ echo $0
sh
$ echo $$
6988

C-Shell:

% echo $shell
/bin/csh
% echo $$
7613

Ważne jest również, aby pamiętać, że polecenia z powłoki będą działały pod identyfikatorem procesu macierzystego (PPID) powłoki .

$ echo $$
6780
$ ps -ef | grep 6780
aploetz   6780  6770  0 11:15 pts/2    00:00:00 bash
aploetz   8572  6780  0 11:34 pts/2    00:00:00 ps -ef
aploetz   8573  6780  0 11:34 pts/2    00:00:00 grep --color=auto 6780
Aaron
źródło