Se você tiver uma sequência de várias linhas, pode simplesmente usar wc -l
para contar o número de linhas:
printf '%s' "$string" | wc -l
Para armazenar esse número em uma variável:
nlines=$( printf '%s' "$string" | wc -l )
No entanto, você não precisa desse número para fazer um loop while:
printf '%s' "$string" |
while read -r line; do
# do something with "$line"
done
Dependendo do que você está fazendo em cada linha, talvez você não precise de um loop while:
printf '%s' "$string" | awk '<some awk script>'
Dependendo de como os dados são gerados, você pode nem precisar armazená-los em uma variável de várias linhas:
some_command | some_line_by_line_processing
Aqui, some_command
pode ser um loop while, uma coleção de comandos em um subshell ( (...)
) ou um comando simples que gera saída e some_line_by_line_processing
também pode ser um comando simples (como awk
) ou um loop ou qualquer outra coisa que você precisa para processar a saída da primeira parte do pipeline linha por linha.