1
$ x=(a b c d e)
$ echo ${#x[*]}
5
$ for ((i=0;i<5;i++)); do echo ${x[$i]}; done
a
b
c
d
e
$ for ((i=0;i<5;i++)); do echo ${x[i]}; done
a
b
c
d
e
$ for ((i=0;i<5;i++)); do echo i; done
i
i
i
i
i
$ for ((i=0;i<5;i++)); do echo $i; done
0
1
2
3
4

I use either $i or i to access array element, all are right? Why?

Victor S
  • 4,021
  • 15
  • 43
  • 54
  • @For the same reason as explained in the answer, you could also write your loop as `for ((i=0;$i<5;i++)); do ... done` – user1934428 Jul 21 '20 at 14:32

1 Answers1

1

Array indices are evaluated in an arithmetic context. Which means that both :

${x[i]}

and

${x[$i]}

are valid.

For instance :

 $ x=(a b c d e)
 $ echo "${x[0]}"
 a
 $ i=1
 $ echo "${x[i+2]}"
 d
Matias Barrios
  • 4,674
  • 3
  • 22
  • 49