码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • shell脚本之求和运算


    1. 需求

    • step1 定义两个变量i,sum,均初始化为0
    • step2 定义一个循环体,求累加和。
    • step3 实现加法可以使用如下的三种方式
    1. let sum=sum+1
    2. $(($sum+1))
    3. expr $sum + 1
    • step4 最后输出和sum

    2. 实战

    2.1 代码1

    1. #!/bin/bash
    2. i=0
    3. sum=0
    4. while[$i -le 10]  # 当i<10
    5. do
    6. let $sum=$i+$sum
    7. let $i=$i+1
    8. done
    9. echo sum

    上面这份代码,是个典型的错误代码。主要的错误点有:

    • 01.while循环有误。应该是while [ $i -le 10 ],注意同上面空格的比较。while之后一定要有空格【为什么?Linux的shell就是这么要求的】。这个跟if后需要用空格一样!
    • 02.let $sum=$i+$sum应该修改成 let sum=$i+$sum,或者是let sum=sum+i。至少需要保证第一个sum没有$。否则会得到一个attempted assignment to non-variable错误
    • 03.最后输出sum的时候,应该是echo $sum,而不是echo sum

    修改一下,得到可以执行的正确代码:

    1. [root@LittleLawson ~]# cat test.sh 
    2. #!/bin/bash
    3. i=0
    4. sum=0
    5. while [ $i -le 10 ]  # 当i<10
    6. do
    7. let sum=$i+$sum
    8. let i++
    9. done
    10. echo $sum

    或者

    1. #!/bin/bash
    2. i=0;sum=0
    3. while [ $i -le 10 ]
    4. do
    5. let sum=sum+i
    6. let i++
    7. done
    8. echo $sum

    2.2 代码2

    代码如下:使用了三种不同的方式运算:

    1. #!/bin/bash
    2. i=0
    3. sum=0
    4. for((i=0;i<10;i++)) #使用for循环
    5. do
    6.  let sum=sum+i
    7. done
    8. echo "1->10的和是:" $sum
    9. let sum=sum+1
    10. echo "再使用let sum=sum+1的方式再加1,结果是:"$sum
    11. sum=$(($sum+1))
    12. echo -e "使用\$(())的方式再加1,结果是:"$sum
    13. sum=`expr $sum + 1`
    14. echo "使用expr的方式再加1,结果是:"$sum

    3. 注意事项

    expr运算时,操作数中间必须有空格,如下所示:

    1. [root@server4 hadoop]# expr 1+5
    2. 1+5
    3. [root@server4 hadoop]# expr 1 + 5
    4. 6

  • 相关阅读:
    Maven 生命周期clean default size含义
    Ubuuntu22.04 LTS 用户管理,新建用户 adduser,sudo,管理员用户
    iphone怎么传数据到另一个手机,苹果如何转移数据到新手机,两台iphone怎么同步所有数据
    ELK之Logstash解析时间相差8h的问题
    uart协议串口通信刨析(学习笔记)
    ​基于AI的脑电信号独立成分的自动标记工具箱
    前端demo: 实现对图片进行上传前的压缩功能
    多家大厂JAVA面试题整理分布式+微服务+高并发+性能优调+框架源码
    【云原生】设备入云之基于FlexManager的应用开发
    Python:实现bucket sort桶排序算法(附完整源码)
  • 原文地址:https://blog.csdn.net/lovedingd/article/details/126304018
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号