Soy principiante en la programación de bash shell. ¿Me puede decir acerca de los símbolos '$$' en el shell bash?
Si trato de la siguiente
#> echo $$
imprime
#>18756
¿Me puede decir lo que este símbolo se utiliza para y cuando?
Soy principiante en la programación de bash shell. ¿Me puede decir acerca de los símbolos '$$' en el shell bash?
Si trato de la siguiente
#> echo $$
imprime
#>18756
¿Me puede decir lo que este símbolo se utiliza para y cuando?
Es la identificación del proceso del proceso bash en sí.
Es posible utilizarlo para realizar un seguimiento de su proceso de largo de su vida - utilizar ps -p
para ver si todavía está funcionando, lo envía una señal utilizando kill
(para hacer una pausa en el proceso, por ejemplo), cambiar su prioridad con renice
, y así sucesivamente.
Las identificaciones de proceso a menudo se escriben en archivos de registro, especialmente cuando se ejecutan varias instancias de un script a la vez, para ayudar a rastrear el rendimiento o diagnosticar problemas.
Aquí está the bash documentation que describe parámetros especiales.
BASHPID
, mencionado por ghostdog74, se agregó a la versión 4.0. He aquí un ejemplo de Mendel Cooper Advanced Bash-Scripting Guide que muestra la diferencia entre $$
y $BASHPID
:
#!/bin/bash4
echo "\$\$ outside of subshell = $$" # 9602
echo "\$BASH_SUBSHELL outside of subshell = $BASH_SUBSHELL" # 0
echo "\$BASHPID outside of subshell = $BASHPID" # 9602
echo
(echo "\$\$ inside of subshell = $$" # 9602
echo "\$BASH_SUBSHELL inside of subshell = $BASH_SUBSHELL" # 1
echo "\$BASHPID inside of subshell = $BASHPID") # 9603
# Note that $$ returns PID of parent process.
O puede vincular directamente a la documentación oficial de Bash: http://www.gnu.org/software/bash/manual/bashref.html#Special-Parameters http://www.gnu.org/software/bash/manual /bashref.html#Shell- Variables – ephemient
Buena idea, hecho, gracias. –
si tiene bash, un relativamente cerca equivalente es la variable BASHPID. Ver hombre bash
BASHPID
Expands 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.
¿Qué ha pasado con la buena vieja tradición de leer el fino manual de su caparazón? – Jens