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


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

相关内容