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.