A resposta direta à sua pergunta é "use aspas duplas" porque aspas simples impedem todas as expansões:
right=$(echo "$wrongpath" | sed "s|$oldtargetdir|$goodtargetdir|")
Não há necessidade do ponto e vírgula à direita; elas são necessárias apenas quando algo segue na mesma linha (então a anterior a done
não é redundante, embora o layout seja pouco ortodoxo e o done
geralmente esteja em uma linha por conta própria).
Você também pode usar:
right="${wrongpath/$oldtargetdir/$goodtargetdir}"
que evita a sobrecarga de subprocessos.