免费注册 查看新帖 |

Chinaunix

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

[系统管理] 如何使awk取得的结果保存在数组内 [复制链接]

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

需要在一个循环里面同时使用两个数组,一个数组为直接赋值的,但另一个数组的元素需要使用awk处理后得到的结果,但awk取得的结果保存在数组内有些许问题,请教:如何使awk取得的结果保存在数组内(利用循环使awk的结果赋值给另一个数组是可以实现,但总觉得这个方法不是很好,有另外的方法吗)

比如我需要使用kvm宿主机的iptables做kvm虚拟机的端口映射,两个数组的元素是一对一的关系

直接赋值的时候在数量上统计数组元素为2个
  1. [hadwinw@kvm tmp]$ test=('1' '2')
  2. [hadwinw@kvm tmp]$ for i in ${test[@]}
  3. > do
  4. > echo $i
  5. > done
  6. 1
  7. 2
  8. [hadwinw@kvm tmp]$ echo $test
  9. 1
  10. [hadwinw@kvm tmp]$ echo ${#test[@]}
  11. 2
复制代码
使用awk过滤后,统计数量上数组元素为1个
  1. [hadwinw@kvm tmp]$ test2=$(echo "3 4" | awk '{print}')
  2. [hadwinw@kvm tmp]$ for i in ${test2[@]}
  3. > do
  4. > echo $i
  5. > done
  6. 3
  7. 4
  8. [hadwinw@kvm tmp]$ echo $test2
  9. 3 4
  10. [hadwinw@kvm tmp]$ echo ${#test2[@]}
  11. 1
复制代码
这样就会变成:
  1. arraylength=${#test[@]}
  2. [hadwinw@kvm ~]$ for i in `seq 0 $arraylength`
  3. > do
  4. > echo ${test[$i]} ${test2[$i]}
  5. > done
  6. 1 3 4
  7. 2
复制代码
而不是我希望的
1 3
2 4

论坛徽章:
0
2 [报告]
发表于 2014-12-02 22:26 |只看该作者
回复 1# hadwinw
  1. test=( $(echo "3 4"|awk '{print}') )
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-12-02 22:37 |只看该作者
回复 2# Looiml
可以啊,真谢谢


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP