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

问题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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值