Il convient de noter que $BASHPIDc'est nouveau pour BASH 4. Si vous utilisez BASH 3.x, vous devez utiliser$$
Bruno Bronosky
Réponses:
19
Un exemple est fourni dans la BASHPIDdescription de la page de manuel bash:
BASHPIDExpands to the process id of the current bash process.This
differs from $$ under certain circumstances, such as subshells
that do not require bash to be re-initialized.
Voici un exemple de sous-shell qui affiche le contenu de la variable, ainsi que $$le contenu de l' BASHPIDextérieur du sous-shell.
$ echo $(echo $BASHPID $$) $$ $BASHPID25680169201692016920# | | | |# | | | -- $BASHPID outside of the subshell# | | -- $$ outside of the subshell# | -- $$ inside of the subshell# -- $BASHPID inside of the subshell
Sous-coquilles. $$est spécifié par POSIX et reste toujours la valeur du processus shell d'origine. $BASHPIDest une variable spécifique à Bash, et est toujours la valeur du processus à partir duquel la variable est déréférencée, en comptant les sous-coquilles.
$ f(){ printf '%s: %d, %d\n'"$1" $$ $BASHPID;};
$ ${BASH_VERSION+shopt -s lastpipe};set+m;
$ f 1>&2| f 22:31490,314901:31490,32545
J'ai réussi à convaincre le mainteneur mksh d'ajouter BASHPIDà la version la plus récente, donc c'est un peu portable. Il est également possible de l'implémenter BASHPIDvous-même dans ksh93 sur de nombreuses plateformes.
$BASHPID
c'est nouveau pour BASH 4. Si vous utilisez BASH 3.x, vous devez utiliser$$
Réponses:
Un exemple est fourni dans la
BASHPID
description de la page de manuel bash:Voici un exemple de sous-shell qui affiche le contenu de la variable, ainsi que
$$
le contenu de l'BASHPID
extérieur du sous-shell.la source
Sous-coquilles.
$$
est spécifié par POSIX et reste toujours la valeur du processus shell d'origine.$BASHPID
est une variable spécifique à Bash, et est toujours la valeur du processus à partir duquel la variable est déréférencée, en comptant les sous-coquilles.J'ai réussi à convaincre le mainteneur mksh d'ajouter
BASHPID
à la version la plus récente, donc c'est un peu portable. Il est également possible de l'implémenterBASHPID
vous-même dans ksh93 sur de nombreuses plateformes.la source