Como a variável page pode conter texto arbitrário, você não deve usar echo , você deve usar printf .
times="$(printf %s\n "$page" | wc -l)"
Observe também que, se você tiver mais de uma nova linha no resultado de seu comando grep , não obterá o resultado esperado, não importando o motivo, porque tiras de substituição de comandos à direita de novas linhas e o comando echo ou o comando printf que eu uso da mesma forma adicionará exatamente em uma nova linha, independente de quantos foram retirados da saída grep quando a variável $page estava sendo definida.
É claro que, mesmo nesse caso, a variável $times conterá muitos espaços extras no início, porque é assim que wc -l exibirá suas informações. Portanto, essa resposta não aborda o problema mais amplo do seu script: parece que você está pressionando bash para o serviço em que awk serviria melhor.
Eu posso estar errado sobre isso, dependendo do que você pretende fazer com a variável $times , mas eu duvido seriamente disso. Muito provavelmente você pode fazer o que você precisa ( tudo do que você precisa) com um awk one-liner.