- 论坛徽章:
- 0
|
本帖最后由 hadwinw 于 2014-12-02 22:18 编辑
需要在一个循环里面同时使用两个数组,一个数组为直接赋值的,但另一个数组的元素需要使用awk处理后得到的结果,但awk取得的结果保存在数组内有些许问题,请教:如何使awk取得的结果保存在数组内(利用循环使awk的结果赋值给另一个数组是可以实现,但总觉得这个方法不是很好,有另外的方法吗)
比如我需要使用kvm宿主机的iptables做kvm虚拟机的端口映射,两个数组的元素是一对一的关系
直接赋值的时候在数量上统计数组元素为2个- [hadwinw@kvm tmp]$ test=('1' '2')
- [hadwinw@kvm tmp]$ for i in ${test[@]}
- > do
- > echo $i
- > done
- 1
- 2
- [hadwinw@kvm tmp]$ echo $test
- 1
- [hadwinw@kvm tmp]$ echo ${#test[@]}
- 2
复制代码 使用awk过滤后,统计数量上数组元素为1个- [hadwinw@kvm tmp]$ test2=$(echo "3 4" | awk '{print}')
- [hadwinw@kvm tmp]$ for i in ${test2[@]}
- > do
- > echo $i
- > done
- 3
- 4
- [hadwinw@kvm tmp]$ echo $test2
- 3 4
- [hadwinw@kvm tmp]$ echo ${#test2[@]}
- 1
复制代码 这样就会变成:- arraylength=${#test[@]}
- [hadwinw@kvm ~]$ for i in `seq 0 $arraylength`
- > do
- > echo ${test[$i]} ${test2[$i]}
- > done
- 1 3 4
- 2
复制代码 而不是我希望的
1 3
2 4 |
|