$$ en un script vs $$ en una subshell
$$
da la identificación del proceso del proceso del script cuando se usa en un script, como este:
Ejemplo
#!/bin/bash
# processid.sh
# print process ids
ps -o cmd,pid,ppid
echo "The value of \$\$ is $"
$ ./processid.sh
CMD PID PPID
bash 15073 4657
/bin/bash ./processid.sh 15326 15073
ps -o cmd,pid,ppid 15327 15326
The value of $ is 15326
Observe el pid dado por$$
yps
es 15326
Mi indicador de shell es pid 15073
Pero en una subshell,$$
da pid de shell principal (que es 15073)
Ejemplo 2
$ ( ps -o cmd,pid,ppid ; echo $ )
CMD PID PPID
bash 15073 4657
bash 15340 15073
ps -o cmd,pid,ppid 15341 15340
15073
Aquí subshell es pid 15340
Pregunta: ¿Por qué es así? ¿No se está ejecutando el script también en una subshell? ¿Cuál es la diferencia entre el subshell en el ejemplo 2 y el shell en el que se ejecuta el script en el ejemplo 1?