Variável de exclamação '$!' [duplicado]

8

Eu tenho estudado para o meu exame Unix e muitas vezes vi uma variável de ponto de exclamação - $! Se eu escrever echo $! no meu shell do Mac me diz algo como "Você tem e-mail em ..."

É objetivo deste para armazenar se eu tenho ou não tem e-mails ou há outra coisa?

EDIT: Coincidência engraçada aconteceu. Exatamente quando eu escrevi echo $! meu Shell também me avisou que eu tenho alguns e-mails. Então é por isso que escrevi essa parte da correspondência.

    
por Superian007 03.06.2016 / 14:25

3 respostas

13

$! is the PID of the most recent background command.

Veja esta excelente resposta para outros parâmetros especiais.

    
por 03.06.2016 / 14:28
6

O shell verifica se há novos e-mails depois que um comando foi concluído e $MAILCHECK ou 600 segundos passaram.

echo $! imprime o PID do último processo em segundo plano. Depois disso, um cheque por correspondência pode acontecer.

    
por 03.06.2016 / 17:11
5

$! é substituído pelo identificador de processo do último processo colocado em segundo plano no shell atual, se houver. O bash manual fornece detalhes de todos esses parâmetros especiais .

Para ver isso em ação:

echo $!

deve imprimir 0 (supondo que nenhum trabalho tenha sido obtido em segundo plano)

man bash &
echo $!

deve imprimir o identificador de processo do processo man que está em segundo plano. A saída completa deve ser parecida com

$ man bash &
[1] 4319
[1]  + 4319 suspended (tty output)  man bash
$ echo $!
4319
    
por 03.06.2016 / 14:28