Nello scripting di Bash, qual è il significato di “$! “?


39

Se sto assegnando una variabile con

temp=$!

quale sarebbe il suo valore?

Risposte:


57

$!contiene l'ID del processo della pipeline in background eseguita più di recente. Da man bash:

Parametri speciali

La shell tratta diversi parametri appositamente. Questi parametri possono solo essere referenziati; l'assegnazione a loro non è consentita.

...

! - Si espande nell'ID processo del comando in background (asincrono) eseguito più di recente.

Per esempio:

$ sleep 60 &
[1] 6238
$ echo "$!"
6238

Ho la sensazione che tu e slm state dicendo della stessa cosa :)
msw,

22

Dalla pagina man di Bash:

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

Conterrebbe quindi $!l'ID di processo (PID) dell'ultimo processo in background.

Esempio

$ sleep 100 &
[1] 18813

$ echo "$!"
18813

Riferimenti


1
Ho la sensazione che tu e Chris Down state dicendo della stessa cosa :)
un CVn del

2
Sembrerebbe che ci sia un'eco su questa domanda Cool.
slm

Anche gli stessi voti contano!
un CVn

@ MichaelKjörling - hey grandi menti pensano allo stesso modo Cool).
slm
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.