Você precisa usar
while [ $line -lt $line_number ]; do
echo $line
done
ou
while [[ $line < $line_number ]]; do
echo $line
done
Dissociação [fonte]
Único [] são testes de condição compatíveis com o posix shell.
O dobro [[]] é uma extensão do padrão [] e é suportado pelo bash e por outros shells (por exemplo, zsh, ksh). Eles suportam operações extras (assim como as operações posix padrão). Por exemplo: || em vez de -o e regex correspondente a =~ . Uma lista mais completa de diferenças pode ser encontrada na seção manual do manual sobre construções condicionais .
Use [] sempre que quiser que seu script seja portável entre os shells. Use [[]] se você quiser expressões condicionais não suportadas por [] e não precisar ser portável.