Jakie jest znaczenie $$ 1 w bash?

27

Właściwie bawię się argumentami i tak się stało. Pomyślałem, że chcę zobaczyć, co się stanie, jeśli napiszę. $$1Zrobiłem to i dostałem coś poniżej.

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

Co to znaczy 19301, czy to coś mówi?

Konkluzja: co to znaczy $$1w bash.

rɑːdʒɑ
źródło
1
ouch !! to bardzo łatwa rzecz. Nadal muszę się wiele nauczyć. Wszystkie odpowiedzi są super. +1 dla wszystkich.
rɑːdʒɑ

Odpowiedzi:

27

$$ to PID (identyfikator procesu) bieżącego procesu.

$$1to powyższy PID, po którym następuje literał 1.

Mówi ci więc, że masz bashproces z PID 1930.

Ale ... darmowa sztuczka:

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

(dość skomplikowane, prawda?)

Więcej informacji w TLDP .

Rmano
źródło
1
Przez chwilę czytam TLDP jako „Za długo nie wysikałem”.
Luis Alvarado
13
  • $$- pid bieżącej powłoki (nie podpowłoki) - zobacz Jakie są specjalne zmienne powłoki znaku dolara?

  • $$1- pid bieżącej powłoki (nie podpowłoki), po której następuje 1.

  • $$2- pid bieżącej powłoki (nie podpowłoki), po której następuje 2.

  • $$a- pid bieżącej powłoki (nie podpowłoki), po której następuje aznak.

  • I tak dalej...

Zobacz dane wyjściowe echo $$1.

Błąd command not foundpojawia się, ponieważ próbujesz wykonać ciąg złożony z cyfr, co oczywiście nie jest poleceniem.

Radu Rădeanu
źródło
10

Połączyłeś $$i 1razem otrzymałeś PID bieżącej powłoki, a 1więc $$oznacza PID aktualnie działającej powłoki i 1jest tylko postacią, którą możesz zrobić $$a, $$@aby uzyskać PID połączony z następującą postacią.

Praca w
źródło
6

$$ określi, 1930który jest pid bieżącej powłoki.

Kiedy $$1piszesz, oznacza to, że następuje pid, a po nim jeden, więc wynik będzie 19301.

Wypróbuj $$2wyjście19302

nux
źródło