Właściwie bawię się argumentami i tak się stało. Pomyślałem, że chcę zobaczyć, co się stanie, jeśli napiszę. $$1
Zrobił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 $$1
w bash.
Odpowiedzi:
$$
to PID (identyfikator procesu) bieżącego procesu.$$1
to powyższy PID, po którym następuje literał1
.Mówi ci więc, że masz
bash
proces z PID 1930.Ale ... darmowa sztuczka:
(dość skomplikowane, prawda?)
Więcej informacji w TLDP .
źródło
$$
- 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ępuje1
.$$2
- pid bieżącej powłoki (nie podpowłoki), po której następuje2
.$$a
- pid bieżącej powłoki (nie podpowłoki), po której następujea
znak.I tak dalej...
Zobacz dane wyjściowe
echo $$1
.Błąd
command not found
pojawia się, ponieważ próbujesz wykonać ciąg złożony z cyfr, co oczywiście nie jest poleceniem.źródło
Połączyłeś
$$
i1
razem otrzymałeś PID bieżącej powłoki, a1
więc$$
oznacza PID aktualnie działającej powłoki i1
jest tylko postacią, którą możesz zrobić$$a
,$$@
aby uzyskać PID połączony z następującą postacią.źródło
$$ określi,
1930
który jest pid bieżącej powłoki.Kiedy
$$1
piszesz, oznacza to, że następuje pid, a po nim jeden, więc wynik będzie19301
.Wypróbuj
$$2
wyjście19302
źródło