A versão do bash na versão em execução do meu sistema do Debian é:
bash --version|awk 'NR==1'
GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)
Na resposta de Eyal Levin neste outro tópico do Stack Overflow , ele recomenda isso:
Example:
$ echo "title\nvalue1\nvalue2\nvalue3" | (read line; echo "$line"; grep value2)
Output:
title
value2
No meu console Bash eu corro isso:
debian@debian:~$ echo "title\nvalue1\nvalue2\nvalue3" | (read line; echo "$line"; grep value2)
titlenvalue1nvalue2nvalue3
debian@debian:~$
Por que o comando produz um resultado diferente no meu sistema operacional?
echo "title\nvalue1\nvalue2\nvalue3" | (read line; echo "$line"; grep value2)
Por algum motivo,
echo
se comporta de maneira diferente em diferentes plataformas.Portanto, como explica esta resposta do Stack Overflow , substitua
echo
porprintf
uma saída consistente em diferentes plataformas.Sabendo disso, altere seu comando para usar
printf
assim:Ou você pode simplesmente adicionar o
-e
parâmetro paraecho
“habilitar a interpretação de escapes de barra invertida”, comoecho
explica a página man .Testei isso e funciona no Bash no Ubuntu 20.04:
E também funciona bem na versão esquisita do Bash que o macOS Monterey (12.6) a Apple preparou: