W skryptach Bash co oznacza „$! ”?

39

Jeśli przypisuję zmienną za pomocą

temp=$!

jaka byłaby jego wartość?

Chen A.
źródło

Odpowiedzi:

57

$!zawiera identyfikator procesu ostatnio wykonywanego potoku w tle. Od man bash:

Parametry specjalne

Powłoka traktuje kilka parametrów specjalnie. Do tych parametrów można się jedynie odwoływać; przypisanie do nich jest niedozwolone.

...

! - rozwija się do ID procesu ostatnio wykonanej komendy w tle (asynchronicznej).

Na przykład:

$ sleep 60 &
[1] 6238
$ echo "$!"
6238
Chris Down
źródło
Mam wrażenie, że ty i slm mówicie o tym samym :)
msw
22

Ze strony podręcznika użytkownika Bash:

   !   Expands to the process ID of the most recently executed 
       background (asynchronous) command.

Więc $!będzie zawierać identyfikator procesu (PID) ostatniego zadania, które zostało uruchomione w tle.

Przykład

$ sleep 100 &
[1] 18813

$ echo "$!"
18813

Referencje

slm
źródło
1
Mam wrażenie, że ty i Chris Down mówicie o tym samym :)
CVn
2
Wydaje się, że echo tego pytania 8-).
slm
Te same głosy też się liczą!
CVn
@ MichaelKjörling - hej, wielkie umysły myślą podobnie 8-).
slm