Chaque processus dans un système d'exploitation de type UNIX possède un identifiant unique (temporaire), le PID. Deux processus s'exécutant en même temps ne peuvent pas avoir le même PID, et $$ fait référence au PID de l'instance bash exécutant le script.
C'est très pas un identifiant unique dans le sens où il ne sera jamais réutilisé (en effet, les PID sont constamment réutilisés). Ce qu'il vous donne est un nombre tel que, si une autre personne exécute votre script, elle obtiendra un identifiant différent alors que le vôtre est toujours en cours d'exécution. Une fois que le vôtre meurt, le PID peut être recyclé et quelqu'un d'autre pourrait exécuter votre script, obtenir le même PID, et ainsi obtenir le même nom de fichier.
En tant que tel, il est seulement vraiment sain de dire "$$ donne un nom de fichier tel que si quelqu'un d'autre exécute le même script alors que mon instance est toujours en cours d'exécution, il obtiendra un nom différent".