web-dev-qa-db-fra.com

Dans les scripts Bash, quelle est la signification de "$!"?

Si j'affecte une variable avec

temp=$!

quelle serait sa valeur?

44
Chen A.

$! contient l'ID de processus du pipeline d'arrière-plan le plus récemment exécuté. De man bash:

Paramètres spéciaux

Le Shell traite spécialement plusieurs paramètres. Ces paramètres ne peuvent être référencés; leur affectation n'est pas autorisée.

...

! - S'étend à l'ID de processus de la dernière commande en arrière-plan (asynchrone) exécutée.

Par exemple:

$ sleep 60 &
[1] 6238
$ echo "$!"
6238
63
Chris Down

Depuis la page de manuel de Bash:

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

Donc $! contiendrait l'ID de processus (PID) du dernier travail en arrière-plan.

Exemple

$ sleep 100 &
[1] 18813

$ echo "$!"
18813

Références

24
slm