Bash shell,while 循环中的变量无法保存问题

来源:互联网 发布:linq to sql 编辑:程序博客网 时间:2024/06/01 09:39

问题SHELL举例:

#!/bin/sh

Counter=0

ls /opt/src/ | while read LINE

do

let "Counter=Counter+1"

done

echo $Counter

 

该SHELL用于计算/opt/src/中有多少文件,但实际运行中无论/opt/src/下有多少文件,最后输出都是0。

经查,造成这个问题的原因是while循环位于管道中,这意味着在运行过程中,while循环实际是位于一个新的SHELL中的,while循环中的Counter变量和文件开头定义的Counter变量是两个不同的变量,所以while循环中所改变的值在while循环结束后无法保存下来。

 

解决办法:

#!/bin/sh

Counter=0

 

ls /opt/src/ > /tmp/t1.txt

 

while read LINE

do

let "Counter=Counter+1"

done < t1.txt

 

rm /tmp/t1.txt -f

echo $Counter


原创粉丝点击