Os nomes das variáveis do shell não devem conter um traço.
old_name="foo"
new_name="bar"
sed -i -e "s/${old_name}/${new_name}/g"
Mas certifique-se de que o antigo e o novo nome não contenham nada que possa ser interpretado por sed
(como um ponto ...). Ou você teria que escapar desses caracteres:
old_name="foo\.sh"
new_name="bar.sh"
Mas toda a abordagem parece muito estranha para mim. Normalmente você passaria parâmetros para um script e o chamaria como
/path/to/script "$old_name" "$new_name"
ou
OLD_NAME=foo NEW_NAME=bar /path/to/script