I'm trying to call this shell script from within the CLI of GRASS GIS:
for (( day=5; day<367; day+5 )); do # commands that I've tested without a loop. done exit 0
Syntax error: Bad for loop variable
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.Sign up to join this community
Perhaps GRASS GIS pre-defines a variable named "day"?
The code doesn't work in straight bash by the way. You don't actually increment the value of "day".
#!/bin/bash for (( day=5; day<367; day=day+5 )); do # commands that I've tested without a loop. echo $day done exit 0
That works for me, bash 2.05b on a RHEL 5.0 server.
This error message comes from ash. There are several shells with a similar syntax. Ash is a relatively basic one designed for a small memory footprint and fast execution. Another common shell is Bash. Bash has more features. The syntax you posted exist only in bash (and some other shells, but not ash).
In ash, you would need to write¹:
day=5 while [ $day -lt 367 ]; do … day=$((day + 5)) done
Note that depending on the Linux distribution,
/bin/sh is either ash or bash (a few exotic ones may use other implementations). If you're writing a script that uses bash syntax, be sure to put
#!/bin/bash at the top.
¹ Assuming you meant
day+=5 where you wrote
day+5, otherwise it's an infinite loop.