Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"[0: command not found" in Bash [duplicate]

Tags:

syntax

bash

shell

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?

like image 610
Dhaval Babu Avatar asked Mar 02 '17 14:03

Dhaval Babu


1 Answers

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:

  • Why should there be a space after '[' and before ']' in Bash?
  • How to use double or single brackets, parentheses, curly braces
  • Command not found error in Bash variable assignment
  • Using [ ] vs [[ ]] in a Bash if statement
like image 158
codeforester Avatar answered Oct 15 '22 23:10

codeforester