Skip to main content
1 of 2
Kusalananda
  • 355.9k
  • 42
  • 735
  • 1.1k

There are four things in your script that you should consider changing. Two of them are syntax related:

  1. Assignments can not have spaces around =. You have this error in two places.
  2. To do an arithmetic less than or equal test, use -lt, not <=. The <= is an input redirection from a file called =.

The other two are:

  1. Always double quote expansion. Use echo "$n" or printf '%s\n' "$n" instead of echo $n. Use [ "$n" -lt 99 ] instead of [ $n -lt 99 ]. In the general case, the shell would otherwise split the variable's value into words and apply filename globbing rules to each of those words.
  2. You don't need declare -i here. Declaring a variable as integer in bash is very rarely needed.

See also:

Kusalananda
  • 355.9k
  • 42
  • 735
  • 1.1k