shell变量问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 20:13:12
#!/bin/bash
count=1
count1=1
while [ $count1 -ne 10 ]
do
let count=$count+1
let count1=$count1+1
echo $count
done
echo
echo $count
这个程序运行后得到count的值是10,没什么问题,再看下面一个程序:
#!/bin/bash
count=1
cat 123 | while read line
do
let count=$count+1
echo $count
done
echo
echo $count
下面是运行得到的结果:[root@localhost Desktop]# ./test2.sh
2
3
4
5
6
7
8
9
10

1
123里内容我想是没什么问题,就几行字,循环中count的值应该变了,为什么最后却还是1?
哪位大哥帮解释下~~

do
let count=$count+1
echo $count
你可以当时read while的小bug,在其循环作用域内,这里的count相当于局域变量。循环结束后,count保持原来的值。

晕,这不是C和C++不好意思,看不太懂.