您的位置:首页 > 运维架构 > Shell

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

2013-10-22 16:51 316 查看
问题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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐