分页: 1 / 1

数组赋值无效的问题(已解决)

发表于 : 2010-08-02 13:53
gzbao9999
有一个文件bbb

代码: 全选

vava@vava:~/mytest$ more bbb
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251
http://www.xxx.cn/getArticleByAid.action?mid=34&aid=245
http://www.xxx.cn/getArticleByAid.action?mid=71&aid=244
http://www.xxx.cn/getArticleByAid.action?mid=113&aid=232
http://www.xxx.cn/getArticleByAid.action?mid=76&aid=227
http://www.xxx.cn/getArticleByAid.action?mid=53&aid=219
现在写一个脚本slave

代码: 全选

vava@vava:~/mytest$ more slave
#!/bin/bash
array=("1" "2" "3" "4" "5" "6");
echo ${array[0]};
echo ${array[1]};
echo ${array[2]};
echo ${array[3]};
echo ${array[4]};
echo ${array[5]};
echo =====================
j=0;
cat ./bbb|while read i;do array[$j]=$i;echo $j;echo ${array[$j]};echo ${array[0]}=====;j=$[j+1];done
echo =====================
echo ${array[0]};
echo ${array[1]};
echo ${array[2]};
echo ${array[3]};
echo ${array[4]};
echo ${array[5]};
运行后的结果

代码: 全选

vava@vava:~/mytest$ ./slave
1
2
3
4
5
6
=====================
0
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251=====
1
http://www.xxx.cn/getArticleByAid.action?mid=34&aid=245
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251=====
2
http://www.xxx.cn/getArticleByAid.action?mid=71&aid=244
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251=====
3
http://www.xxx.cn/getArticleByAid.action?mid=113&aid=232
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251=====
4
http://www.xxx.cn/getArticleByAid.action?mid=76&aid=227
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251=====
5
http://www.xxx.cn/getArticleByAid.action?mid=53&aid=219
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251=====
=====================
1
2
3
4
5
6
结果出来和我预测的不一样
array[*]里的数值在出来while循环后,又变回了原来的值
why,how to deal

Re: 数组赋值无效的问题

发表于 : 2010-08-02 14:00
trigger
bash里面while循环接受外部变量似乎要用<重定向

Re: 数组赋值无效的问题

发表于 : 2010-08-02 14:09
gzbao9999
trigger 写了:bash里面while循环接受外部变量似乎要用<重定向
不太明白,能给个例子么?

Re: 数组赋值无效的问题

发表于 : 2010-08-02 14:15
trigger

代码: 全选

#!/bin/bash
array=("1" "2" "3" "4" "5" "6");
echo ${array[0]};
echo ${array[1]};
echo ${array[2]};
echo ${array[3]};
echo ${array[4]};
echo ${array[5]};
echo =====================
j=0;
while read i
    do array[$j]=$i
        echo $j
        echo ${array[$j]}
        echo ${array[0]}=====
        j=$[j+1]
    done < bbb
echo =====================
echo ${array[0]};
echo ${array[1]};
echo ${array[2]};
echo ${array[3]};
echo ${array[4]};
echo ${array[5]};

代码: 全选

$ ./whilechongdx.sh 
1
2
3
4
5
6
=====================
0
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251=====
1
http://www.xxx.cn/getArticleByAid.action?mid=34&aid=245
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251=====
2
http://www.xxx.cn/getArticleByAid.action?mid=71&aid=244
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251=====
3
http://www.xxx.cn/getArticleByAid.action?mid=113&aid=232
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251=====
4
http://www.xxx.cn/getArticleByAid.action?mid=76&aid=227
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251=====
5
http://www.xxx.cn/getArticleByAid.action?mid=53&aid=219
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251=====
6

http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251=====
=====================
http://www.xxx.cn/getArticleByAid.action?mid=66&aid=251
http://www.xxx.cn/getArticleByAid.action?mid=34&aid=245
http://www.xxx.cn/getArticleByAid.action?mid=71&aid=244
http://www.xxx.cn/getArticleByAid.action?mid=113&aid=232
http://www.xxx.cn/getArticleByAid.action?mid=76&aid=227
http://www.xxx.cn/getArticleByAid.action?mid=53&aid=219

Re: 数组赋值无效的问题

发表于 : 2010-08-02 14:54
gzbao9999
搞定了 谢谢楼上