$$ em um script vs $$ em um subshell
$$
fornece a identificação do processo do script quando usado em um script, assim:
Exemplo
#!/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 o pid dado por$$
eps
é 15326
Meu prompt de shell é pid 15073
Mas em um subshell,$$
fornece o pid do shell pai (que é 15073)
Exemplo 2
$ ( ps -o cmd,pid,ppid ; echo $ )
CMD PID PPID
bash 15073 4657
bash 15340 15073
ps -o cmd,pid,ppid 15341 15340
15073
Aqui está o pid 15340
Pergunta: Por que sim? O script também não está sendo executado em um subshell? Qual é a diferença entre o subshell no exemplo 2 e o shell no qual o script é executado no exemplo