You need to use, either
while [ $line -lt $line_number ]; do
while [[ $line < $line_number ]]; do
 are posix shell compliant condition tests.
[] are an extension to the standard
 and are supported by bash and other shells (e.g. zsh, ksh). They support extra operations (as well as the standard posix operations). For example:
|| instead of
-o and regex matching with
=~. A fuller list of differences can be found in the bash manual section on conditional constructs.
 whenever you want your script to be portable across shells. Use
[] if you want conditional expressions not supported by
 and don't need to be portable.