Sr. A resposta de Schaller é boa. A desvantagem de redirecionar a entrada de um arquivo é que sua entrada manual agora também está sujeita ao loop, de modo que os usuários precisarão saber para pressionar enter (não fornecer um valor) para finalizar o loop. Você pode usar sua lógica atual para execuções manuais e fazer algo como abaixo quando houver um arquivo de entrada ($ 1) fornecido ao script (não redirecionado).
Se você tiver certeza de que o formato do arquivo será sempre "nome \ nnúmero \ n", poderá fazer isso:
cntr=0
cat $1 | while read line
do
if [ $cntr -eq 0 ]
then
name=$line
cntr=1
elif [ $cntr -eq 1 ]
number=$line
echo "Your name is $name and your number is $number"
cntr=0
fi
done
Isso deve imprimir sua declaração até que todas as combinações de nome / número tenham sido lidas.