免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4812 | 回复: 4

[文本处理] 数组名中有变量 [复制链接]

论坛徽章:
0
发表于 2015-07-02 21:52 |显示全部楼层
大神们,你们好


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

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

在线等,谢谢大神。

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

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

论坛徽章:
0
发表于 2015-07-02 22:41 |显示全部楼层
大神,你好

学生有所发现:

eval "item=$\{$arrayname[1]\}"
eval url=$item
echo $url

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

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
发表于 2015-07-03 10:04 |显示全部楼层
  1. #!/bin/bash

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

  7. # chapter 2
  8. array_1=(zero one two)
  9. array_2=(three four five)
  10. for (( i=1; i<=2; i++ )) ; do
  11.     echo "in array_$i"
  12.     for n in $(eval echo \${array_$i[@]}) ; do
  13.         echo $n
  14.     done
  15. done
复制代码

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
发表于 2015-07-03 10:08 |显示全部楼层
  1. [code]#!/bin/bash

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

  7. # chapter 2
  8. array_1=(zero one two)
  9. array_2=(three four five)
  10. for (( i=1; i<=2; i++ )) ; do
  11.     echo "in array_$i"
  12.     for n in $(eval echo \${array_$i[@]}) ; do
  13.         echo $n
  14.     done
  15. done
复制代码
[/code]

论坛徽章:
0
发表于 2015-07-03 13:08 |显示全部楼层
reyleon 发表于 2015-07-03 10:08
[/code]


果真是大神,膜拜!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP