Linux下while循环中数组赋值的方法

2014-11-24 00:39:12 · 作者: · 浏览: 10

i=0
cat $ALLGROUPFILE_PATH | while read line
do
ALL_GROUP[i]=$line
let i=i+1
done
echo ${#ALLREGION[@]}


最后一句的echo ${#ALLREGION[@]}为什么打印出的数组长度是空呢?


怎样才能在Linux下while循环的外面得到这个数组的长度呢?


解决方案: 用重定向而不是管道,举例:


-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[31048 0]
; cat file
1
2
3
4
5
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[31048 0]
; cat file.sh
#!/bin/bash

arr=()
i=0
while read line; do
arr[i++]=$line
done < file
echo ${#arr[@]}
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[31048 0]
; ./file.sh
5
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[31048 0]
; bye