Isso acabou sendo uma combinação de problemas. (echo true & echo true2)
(Editei esse erro fora da minha pergunta, pois não era relevante para o que eu realmente queria saber), na verdade, envia o seguinte em uma máquina Windows:
true \r\n
true2\r\n
Portanto, o primeiro problema é que meus comandos de eco incluíram um caractere de espaço estranho. A segunda questão é que grep
trata \n
como o fim da linha, o que é explicado em uma resposta a Por que o fim -de-linha $ anchor não funciona com o comando grep? Então, o segundo problema é que eu preciso capturar o caractere \r
na minha expressão regular. Portanto, o seguinte é o que é necessário para que isso funcione:
(echo true& echo true2) | grep 'true[[:space:]]*$'