Search code examples
bashsh

Syntax error: Bad for loop variable


I'm trying to write a script that will vol up radio in the background

#!/bin/sh

for (( i = 80 ; i <= 101; i++ )) 
 do 
  amixer cset numid=1 i$% sleep 60;
done 

But i have problem:

alarmclock-vol.sh: 3: alarmclock-vol.sh: Syntax error: Bad for loop variable

Solution

  • The for (( expr ; expr ; expr )) syntax is not available in sh. Switch to bash or ksh93 if you want to use that syntax. Otherwise, the equivalent for sh is:

    #!/bin/sh
    
    i=80
    while [ "$i" -le 101 ]; do
        amixer cset numid=1 "$i%"
        sleep 60
        i=$(( i + 1 ))
    done