中是否可以
我们可以在ksh中创建动态数组吗?就像,我们可以创建阵列_ $ i []阵列,范围从1到5?即array_1 [],array_2 [],array_3 [],array_4 []和array_5 []
,我可以通过array_ $ i迭代。在ksh?
您可以使用eval
eval array_$i'[$j]=$val'
eval 'echo $array_'$i
在ksh93中,您可以创建复合变量。这些确实是哈希,而不是数组,而是使用数字索引时可以使用的。
。$ $ echo $KSH_VERSION
Version JM 93u 2011-02-08
$ a[1][1]=foo
$ a[3][1]=bar
$ print -C a
([1]=([1]=foo) [3]=([1]=bar) )
$ print -v a
(
[1]=(
[1]=foo
)
[3]=(
[1]=bar
)
)
$ print ${a[1][1]}
foo
$ print ${a[3][1]}
bar
在这里开发更多BAMAR的答案是一个示例,说明如何在KSH中使用这些"数组":
#!/usr/bin/ksh
#--------------------------------------
# populate arrays
for i in 1 2 3 4 5 ; do # here we will define/use 5 arrays
count=$RANDOM%10 # random array size up to 10 elements
while [[ $count -gt 0 ]]; do
let count=$count-1
eval my_arrays_${i}[$count]=$RANDOM # assigning some random numbers to the array elements
done
done
#--------------------------------------
# display arrays content
for i in 1 2 3 4 5 ; do
idx=0
arr_name=my_arrays_${i}
arr_name_cnt="${#$arr_name[*]}"
eval count=$arr_name_cnt # getting the array count of elements
echo "Array $arr_name has $count elements"
while [[ $idx -lt $count ]]; do # loop over array elements
arr_elem="${${arr_name}[$idx]}"
eval arr_elem=$arr_elem # getting the actual value of the array element
echo "Element $idx: < $arr_elem > "
let idx+=1
done
done