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.


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 .



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.


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.


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.