12

I am trying to get the array in the while-loop and need to update the value in array too.

Below is my code what I have tried. I get this error [0: command not found

#!/bin/bash
i=0
while [$i -le "{#myarray[@]}" ]
do 
    echo "Welcome $i times"
    i= $(($i+1)))
done

How do I fix this?

codeforester
  • 39,467
  • 16
  • 112
  • 140
Dhaval Babu
  • 151
  • 1
  • 1
  • 6
  • 1
    I found Greg's Wiki to be very helpful in learning bash: http://mywiki.wooledge.org/BashGuide/TestsAndConditionals – kalaracey Mar 05 '17 at 22:46

1 Answers1

29

Need a space after [ and no space before or after = in the assignment. $(($i+1))) would try to execute the output of the ((...)) expression and I am sure that's not what you want. Also, you are missing a $ before the array name.

With these things corrected, your while loop would be:

#!/bin/bash
i=0
while [ "$i" -le "${#myarray[@]}" ]
do 
  echo "Welcome $i times"
  i=$((i + 1))
done
  • i=$((i + 1)) can also be written as ((i++))
  • it is always better to enclose variables in double quotes inside [ ... ]
  • check your script through shellcheck - you can catch most basic issues there

See also:

codeforester
  • 39,467
  • 16
  • 112
  • 140