Se você quiser fazer algo parecido com o que less
está fazendo (receber entrada em sua entrada padrão, processá-la e, em seguida, enviá-la) em um script que você escreve, use um while read
loop em seu script.
#!/bin/bash
echo "Beginning"
while read -r line
do
echo "Processed: [$line]"
done
echo "Ending"
Então você pode executá-lo assim:
some_command | your_script
e sua saída será assim:
Beginning
Processed: [First line of input]
Processed: [Second line of input]
Processed: [Third line of input]
Processed: [Fourth line of input]
Ending
Supondo que some_command
em si produz:
First line of input
Second line of input
Third line of input
Fourth line of input
A variável $line
está sendo atribuída, por sua vez, ao valor de cada linha de entrada. Você poderia acumular essas linhas se precisasse concatenando cada linha em uma variável escalar:
all=$all$line
ou
all+=$line
ou acrescentando elementos no final de um array:
array+=($line)