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的值成为了初始化时的值

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: while循环是在特定条件为真时重复执行指定命令的一种循环结构。语法格式如下: ``` while [ condition ]; do commands done ``` 其condition是循环条件,可以是布尔表达式或命令。当condition为真时,循环的命令将被执行,直到condition变为假为止。 示例: ``` #!/bin/bash count=1 while [ $count -le 5 ]; do echo $count count=$((count + 1)) done ``` 输出: ``` 1 2 3 4 5 ``` 该循环会在 count <=5 时执行,当 count=6 时循环结束 ### 回答2: Shell的while循环是一种重复执行一系列命令的控制结构。当循环条件为真时,循环的命令会被反复执行,直到循环条件变为假为止。 while循环的语法如下: ``` while [ condition ] do commands done ``` 其,`condition`是一个判断表达式,如果其值为true则循环的命令会被执行。`commands`表示循环要执行的命令。 在循环,可以执行任意的Shell命令,包括打印输出、变量赋值、条件判断等。循环的命令可以是一条简单的命令,也可以是一个复杂的命令块。循环体的结束需要使用`done`来标识。 循环可以使用一些特殊的控制语句来控制循环的执行。例如,`continue`语句用于跳过本次循环剩余的命令,直接开始下一次循环的执行;`break`语句用于提前结束整个循环。这些控制语句在很多实际应用非常有用。 一般而言,while循环与条件判断语句结合使用,可以用于不断地重复执行某些命令,直到满足某个条件为止。循环条件可以是一个表达式、一个变量的值等等,具有很高的灵活性。 总而言之,while循环Shell一种常用的控制结构,通过判断一个条件来控制循环的执行。使用while循环可以在Shell脚本实现需要重复执行的逻辑,提高脚本的灵活性和效率。 ### 回答3: 在Shell脚本,while循环是一种常用的循环结构,用于在满足特定条件时重复执行一段代码块。其语法格式如下: ``` while [ condition ] do # 循环体代码块 # 可以包含任意的Shell命令和控制流语句 done ``` 其,`condition`是一个用于判断循环是否继续执行的条件表达式。当条件为真时,循环体代码块会被重复执行,直到条件为假时,循环会终止。 在循环体代码块,可以执行任意的Shell命令和控制流语句,用于实现所需的功能。例如,可以读取用户输入、处理文件、执行命令等操作。 下面是一个简单的示例,演示了while循环的用法: ```shell #!/bin/bash count=0 while [ $count -lt 5 ] do echo "Count: $count" count=$((count + 1)) done echo "Loop completed" ``` 以上脚本会输出从0到4共5次的计数,然后输出"Loop completed"。在每次循环,计数会递增,并通过`echo`命令打印出来。在循环结束后,会执行最后一条`echo`语句。 通过while循环,我们可以将需要重复执行的一段代码组织起来,并根据特定条件来实现自动化的批量处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值