Qual é o significado de $$ 1 no bash?

27

Na verdade, estou brincando com argumentos e isso aconteceu. Eu apenas pensei em ver o que acontecerá se eu digitar $$1e fiz e obtiver algo abaixo.

raja@raja-BONEFISH:~$ $$1
19301: command not found

O que significa 19301, está dizendo alguma coisa?

Bottom-Line: o que significa para o $$1bash.

rɑːdʒɑ
fonte
1
ai !! coisa muito fácil. Ainda tenho muitas coisas para aprender. Todas as respostas são super. +1 para todos.
22414

Respostas:

27

$$ é o PID (ID do processo) do processo atual.

$$1é o PID acima seguido pela string literal 1.

Por isso, está dizendo que você bashé o processo com o PID 1930.

Mas ... truque grátis:

show() { eval echo \$$1; }
show PATH
/home/romano/bin:/usr/local/bin:/bin:/usr/bin

(bastante complicado, não é?)

Mais informações em TLDP .

Rmano
fonte
1
For a moment I read the TLDP as "Too Long Didn't Pee".
Luis Alvarado
13
  • $$- pid do shell atual (não subshell) - consulte Quais são as variáveis ​​especiais do shell do cifrão?

  • $$1- pid do shell atual (não subshell) seguido por 1.

  • $$2- pid do shell atual (não subshell) seguido por 2.

  • $$a- pid do shell atual (não subshell) seguido pelo acaractere.

  • E assim por diante...

Veja a saída de echo $$1.

E você recebe o erro command not foundporque está tentando executar uma sequência composta por dígitos que obviamente não é um comando.

Radu Rădeanu
fonte
10

Você concatenou $$e 1reuniu-se para obter o PID do shell atual e 1, ou seja, $$representa o PID do shell em execução no momento e 1é apenas um personagem, você poderia fazer $$a, $$@para obter o PID concatenado com o seguinte caractere.

jobin
fonte
6

$$ indicará 1930qual é o pid do shell atual.

Quando você digita $$1isso significa pid seguido por um, para que a saída seja 19301.

Tente $$2a saída será19302

nux
fonte