Odpowiedzi:
$!
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
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.
$ sleep 100 &
[1] 18813
$ echo "$!"
18813