Você precisa usar aspas duplas para o comando sed
:
$ sed -i.bak "s/^opennic=\".*\"/opennic=\"${u}\"/g" /absolute/path/to/script.sh
Sem aspas, o sed será executado com vários argumentos. Dividindo a variável $u
em vários argumentos por seus espaços.
Algo como o seguinte (cada linha é um argumento diferente):
$ sed \
's/^opennic=".*"/opennic="nameserver' \
'104.238.153.178\nnameserver' \
[...]'
E aí, o primeiro comando s/^[...]
não será completado.