wjn740 发表于 2015-07-02 21:52

数组名中有变量

大神们,你们好


bash中支持:
a=(zero one two three)
arrayname=a
${!arrayname}

我想知道,如何通过arrayname获得数组的长度。

在线等,谢谢大神。

另外我的目的是遍历多个数据所以我把数组的名称定义为
Array_1
Array_2
Array_3
想通过Array_$i去引用他们。

不知道是否有更好的解决方案。

wjn740 发表于 2015-07-02 22:41

大神,你好

学生有所发现:

eval "item=$\{$arrayname\}"
eval url=$item
echo $url

以上上三句可以将arrayname所引用的数组中的元素1的内容取出来,但是不知道是否可以简化成一句话???
希望大神出手相救!!!!!!!

reyleon 发表于 2015-07-03 10:04

#!/bin/bash

# chapter 1
arrayname=(zero one two three)
for n in ${!arrayname[@]}; do
    echo $n ${arrayname}
done

# chapter 2
array_1=(zero one two)
array_2=(three four five)
for (( i=1; i<=2; i++ )) ; do
    echo "in array_$i"
    for n in $(eval echo \${array_$i[@]}) ; do
      echo $n
    done
done

reyleon 发表于 2015-07-03 10:08

#!/bin/bash

# chapter 1
arrayname=(zero one two three)
for n in ${!arrayname[@]}; do
    echo $n ${arrayname}
done

# chapter 2
array_1=(zero one two)
array_2=(three four five)
for (( i=1; i<=2; i++ )) ; do
    echo "in array_$i"
    for n in $(eval echo \${array_$i[@]}) ; do
      echo $n
    done
done

wjn740 发表于 2015-07-03 13:08

reyleon 发表于 2015-07-03 10:08 static/image/common/back.gif


果真是大神,膜拜!
页: [1]
查看完整版本: 数组名中有变量