O pipe conecta stdout de um programa a stdin de outro, portanto, no script, basta ler stdin e você obterá o que o comando anterior imprimiu. Uma maneira simples de ler isso em uma variável é com cat, por exemplo, dentro de myprogram.sh :
mypipevar="$(cat ${1:-/dev/stdin})"
echo "Obtained the value: '$mypipevar'"
No entanto, muitas vezes você quer processar as coisas linha por linha em vez de tudo de uma vez, isso pode ser feito com
while read line
do
echo "$line"
done < "${1:-/dev/stdin}"
Observe que ${1:-/dev/stdin} fornecerá o primeiro argumento ou, se nenhum argumento for especificado, então /dev/stdin , que conterá o conteúdo de stdin, que pode ser lido como um arquivo. Isso permite que você execute o script como command | script ou simplesmente como script filename .