No script Bash, qual é o significado de "$! "?

39

Se eu estiver atribuindo uma variável com

temp=$!

qual seria o seu valor?

Chen A.
fonte

Respostas:

57

$!contém o ID do processo do pipeline em segundo plano executado mais recentemente. De man bash:

Parâmetros especiais

O shell trata vários parâmetros especialmente. Esses parâmetros podem ser referenciados apenas; a atribuição a eles não é permitida.

...

! - Expande para o ID do processo do comando em segundo plano (assíncrono) executado mais recentemente.

Por exemplo:

$ sleep 60 &
[1] 6238
$ echo "$!"
6238
Chris Down
fonte
Eu tenho a sensação de que você e o slm estão dizendo a mesma coisa :) #
31713
22

Na página de manual do Bash:

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

Portanto $!, conteria o ID do processo (PID) do último trabalho em segundo plano.

Exemplo

$ sleep 100 &
[1] 18813

$ echo "$!"
18813

Referências

slm
fonte
1
Tenho a sensação de que você e Chris Abaixo estão dizendo sobre a mesma coisa :)
um CVn
2
Parece que há um eco nesta questão 8-).
Slm
Os mesmos votos também contam!
um CVn 31/07/2013
@ MichaelKjörling - ei grandes mentes pensam da mesma forma 8-).
Slm