Juste pour l'explication, pour clarifier ta correction ;) :
Tu as oublié qu'une variable shell, en l-value - c'est à dire en membre de gauche de l'affectation, ne doit JAMAIS être préfixée par un $.
En gros, on peut dire que VARIABLE représente le contenant, et que $VARIABLE expose le contenu (de VARIABLE - le contenant).
C'est pour cela que ce code est invalide:
On veut mettre "toto" dans un contenu, alors qu'il faut le mettre dans un contenant.
Ces codes sont aussi invalides :
Car les fonctions export ou unset doivent porter sur un contenant, et pas un contenu.
Bonne continuation.