Linux下while循环中数组赋值的方法
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
评论暂时关闭