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


39

Se eu estiver atribuindo uma variável com

temp=$!

qual seria o seu valor?

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

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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.