Skip to main content
That's the `ksh` array syntax. different shells have different array syntaxes.
Source Link
Stéphane Chazelas
  • 585k
  • 96
  • 1.1k
  • 1.7k

sh does not support array, and your code does not create an array. It created three variable arr1, arr2, arr3.

To initialize an array element in a ksh-like shell, you must use syntax array[index]=value. To get all element in array, use ${array[*]} or ${array[@]}.

Try:

n=1
eval arr[$n]=a
n=2
eval arr[$n]=b
n=3
eval arr[$n]=c

n=1
eval echo \${arr[$n]}
n=2
eval echo \${arr[$n]}
n=3
eval echo \${arr[$n]}

n='*'

eval echo \${arr[$n]}

sh does not support array, and your code does not create an array. It created three variable arr1, arr2, arr3.

To initialize an array element, you must use syntax array[index]=value. To get all element in array, use ${array[*]} or ${array[@]}.

Try:

n=1
eval arr[$n]=a
n=2
eval arr[$n]=b
n=3
eval arr[$n]=c

n=1
eval echo \${arr[$n]}
n=2
eval echo \${arr[$n]}
n=3
eval echo \${arr[$n]}

n='*'

eval echo \${arr[$n]}

sh does not support array, and your code does not create an array. It created three variable arr1, arr2, arr3.

To initialize an array element in a ksh-like shell, you must use syntax array[index]=value. To get all element in array, use ${array[*]} or ${array[@]}.

Try:

n=1
eval arr[$n]=a
n=2
eval arr[$n]=b
n=3
eval arr[$n]=c

n=1
eval echo \${arr[$n]}
n=2
eval echo \${arr[$n]}
n=3
eval echo \${arr[$n]}

n='*'

eval echo \${arr[$n]}
Source Link
cuonglm
  • 158.2k
  • 41
  • 342
  • 420

sh does not support array, and your code does not create an array. It created three variable arr1, arr2, arr3.

To initialize an array element, you must use syntax array[index]=value. To get all element in array, use ${array[*]} or ${array[@]}.

Try:

n=1
eval arr[$n]=a
n=2
eval arr[$n]=b
n=3
eval arr[$n]=c

n=1
eval echo \${arr[$n]}
n=2
eval echo \${arr[$n]}
n=3
eval echo \${arr[$n]}

n='*'

eval echo \${arr[$n]}