免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4476 | 回复: 4
打印 上一主题 下一主题

求一段bash脚本(数组遍历组合值方面) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-03 14:11 |只看该作者 |倒序浏览
本帖最后由 zbs168 于 2010-02-03 14:12 编辑

要求如下:
4个动态数组:
例如:
A([0]="-k start" [1]="abc123")
B()
C([0]="-k start111" [1]="fff.ff.com" [2]="ff.com/url")
D([0]="123.123.123.1/24")
类似上面的数组,数组是动态的,有可能C数组是空的,B有值,所以需要首先判断数组里面是不是有值才能进行循环(如果用循环的话)
把上述4个数组进行值的遍历组合为新数组data(),例如上面的4个数组组合的值为:
data([0]="-k start -k start111 123.123.123.1/24"
[1]="-k start fff.ff.com 123.123.123.1/24"
[2]="-k start fff.com/url 123.123.123.1/24"
[3]="abc123 -k start111 123.123.123.1/24"
[4]="abc123 fff.ff.com 123.123.123.1/24"
[5]="abc123 fff.com/url 123.123.123.1/24" )


求达人们给写段bash脚本吧,我想了好几天也没有什么思路
拜谢

论坛徽章:
0
2 [报告]
发表于 2010-02-03 16:36 |只看该作者
顶起,高手们来帮帮忙把

论坛徽章:
0
3 [报告]
发表于 2010-02-03 20:56 |只看该作者
本帖最后由 ywlscpl 于 2010-02-03 21:01 编辑

  1. #!/bin/bash
  2. A=("-k start" "abc123")
  3. B=()
  4. C=("-k start111" "fff.ff.com" "ff.com/url")
  5. D=("123.123.123.1/24")
  6. n=0
  7. n1=${#A[@]}
  8. n2=${#B[@]}
  9. n3=${#C[@]}
  10. n4=${#D[@]}
  11. [ $n1 -eq 0 ] && n1=1
  12. [ $n2 -eq 0 ] && n2=1
  13. [ $n3 -eq 0 ] && n3=1
  14. [ $n4 -eq 0 ] && n4=1
  15. for ((i=0;i<$n1;i++))
  16. do
  17.   for ((j=0;j<$n2;j++))
  18.   do
  19.     for ((k=0;k<$n3;k++))
  20.     do
  21.       for ((l=0;l<$n4;l++))
  22.       do
  23.         data[$n]="${A[i]} ${B[j]} ${C[k]} ${D[l]}"
  24.         n=$((n+1))
  25.       done
  26.     done
  27.   done
  28. done
复制代码

论坛徽章:
0
4 [报告]
发表于 2010-02-04 06:28 |只看该作者
keep moving。。。。。

论坛徽章:
0
5 [报告]
发表于 2010-02-04 10:49 |只看该作者
ywlscpl 发表于 2010-02-03 20:56



  膜拜下,我昨天写了快10组循环,吐了都
这么短就搞定了,强悍啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP