Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

for loop / if condition in shell script

Tags:

bash

shell

I've never done shell script before and now I'm running into a simple problem... I have a for loop which executes every time the run.sh script. To see how far the script has already run I want to print e.g. every 5000 the actual index.

$counter = 0
for ((  i = 0 ;  i <= 5000;  i++  ))do
    if ($i =  $counter); then
            echo "$counter"
            counter=$(counter+1000)
    fi
./run.sh
done

running this piece of code gives me the following error

./for_loop.sh: line 1: =: command not found
./for_loop.sh: line 3: 0: command not found

I have also tried to init the variable counter with

declare -i counter = 0

which gives me the following error

./for_loop.sh: line 1: declare: `=': not a valid identifier
like image 632
mkn Avatar asked Dec 23 '22 00:12

mkn


1 Answers

You don't really need two counters. A single counter will suffice:

for (( counter = 0; counter <= 5000; counter++ ))
do
    if (( counter % 1000 == 0 ))
    then
            echo "$(( counter / 1000 ))"
    fi
    ./run.sh
done

This executes run.sh 5000 times and prints the counter value every 1000 iterations. Note that % is the modulus operator which computes remainder after division and / is the integer division operator.

like image 112
Derek Mahar Avatar answered Jan 03 '23 21:01

Derek Mahar