Como o documento here é indicado por <<EOF (sem nenhuma aspas), o conteúdo do documento here está sujeito à expansão de \$' . Por isso, $newUrl no documento here expande para o seu valor no shell local.
Para passar $newUrl ao shell remoto e fazer com que ele expanda a variável, você pode proteger a $ da expansão: \$newUrl em vez de $newUrl ou usar um literal aqui-document: <<'EOF' em vez de '' <
Você está expandindo a variável newUrl em uma string que será interpretada por um shell. Isso significa que o valor da variável será interpretado como um fragmento de script de shell, não como uma string. Se o valor contiver caracteres especiais de shell, haverá estragos. (Quais caracteres são problemáticos depende da solução que funciona na caixa nominal usada).
Em vez de usar muitas camadas de cotação e expansão, passe a URL como entrada para o comando executado como raiz. Então você não tem nada para se preocupar. Isso tem a vantagem adicional de funcionar mesmo se o sudo não estiver configurado para aceitar -E , o que é bastante comum. Você pode usar sudo sh -c 'cat >>/path/to/file' , ou melhor, para evitar possíveis problemas de cotação no arquivo, sudo tee -a /path/to/file .
sshpass -p "password" ssh -t -t my-box <<'EOF'
newUrl="this is a url"
printf '%s\n' "$newUrl" | sudo tee -a /path/to/file
EOF