我是靠谱客的博主 俊逸手链,最近开发中收集的这篇文章主要介绍shell 关于 while 循环中赋值的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

程序1

#!/bin/sh
        count=0
        cat  temp.txt|while read fre
        do

                count=$(($count+$fre))
        done
        echo "$count"
exit 1

程序2

#!/bin/sh
        count=0
        exec 3< temp.txt
        while read fre <&3
        do

                count=$(($count+$fre))
        done
        echo "$count"
exit 1

程序3

#!/bin/sh
        count=0
        while read fre
        do

                count=$(($count+$fre))
        done<temp.txt
        echo "$count"
exit 1

 

temp.txt文件

2

2

 

 

在运行以上3个程序以后我们会发现

1程序输出结果是0

2,3的输出结果为正确的4

 

原因是因为程序1使用了管道,管道中的while是在子shell中运行的,并不能返回到父shell中

所以count的值成为了初始化时的值

 

最后

以上就是俊逸手链为你收集整理的shell 关于 while 循环中赋值的问题的全部内容,希望文章能够帮你解决shell 关于 while 循环中赋值的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(77)

评论列表共有 0 条评论

立即
投稿
返回
顶部