精华内容
下载资源
问答
  • 原题:通过shell编程或命令行方式求1+2+3...+100=?... 阅读完本博文,你将熟悉shell编程for语句、while语句及until等语句使用语法应用方法。在linux的计算方面,您将熟悉 (())、let、expr、bc等计...

    原题:通过shell编程或命令行方式求1+2+3...+100=?的和来活学活用shell及linux命令。
        阅读完本博文,你将熟悉shell编程中的for语句、while语句及until等语句的使用语法和应用方法。在linux的计算方面,您将熟悉 (())、let、expr、bc等计算命令的使用语法和应用技巧。最后,您还将熟悉seq、tr、awk、sed、{1..100}等linux中的重要命令的使用技巧!

    特别提醒:
        本博文的写作不在于用了多少种实现方法,而是抛砖引玉的给朋友们带来一个可供参考的学习思路和方法,这也是老男孩在linux运维实战培训课堂中讲课时一直所追求的。一个优秀的老师一定要有方法把自己的知识技能真正的输入到学生的脑袋里,这除了老男孩和学生经常说的学好运维的四要素:目标、方法、努力、坚持。还离不开一个优秀老师对学生思路的启发开导以及通过特殊的趣味性课堂教学培养学生主动思考问题的能力。当然,也要培养学生举一反三,的能力,让学生们在积极主动的思考中,不知不觉的,学到了该学习到的运维技术,从而养成良好的学习思考习惯。
        老男孩发现,技术学不好的学生,其实不是智商问题,主要是思路、思维、方法问题。而提升学生的思维、思路、意识、思想也是老男孩linux实战培训的核心内容。    
    老男孩linux培训的宗旨:培养有限的学生成为企业的技术精英!
    这就是老男孩坚持不屑一直追求的目标!
    废话说完了,开始正题!

    思路集锦:
    ①.C语言型for循环结构及(())计算式shell脚本

    [oldboy@student ~]$  cat for1.sh
    #!/bin/sh
    j=0
    for((i=0; i<=100; i++))
    do
        ((j=j+i))
    done
    echo $j

    写成一行的命令行写法:
    for((i=0; i<=100; i++));do ((j=j+i));done;echo $j

    老男孩提示:
    1)此法中我们主要目的是学习expr命令的用法。
    2)expr的效率低于(()),计算1加到100就有明显感觉。

    有关此法更详细的信息请见老男孩linux运维实战培训的课堂讲解或者评论交流。
    -------------------------------------------------
    ③.使用seq命令加for循环语法及let命令计算式脚本
    [oldboy@student ~]$  cat for3.sh
    #!/bin/bash
    sum=0
    i=1
    for i in `seq 100`
    do
       let sum=sum+i
    done
    echo $sum
    老男孩提示:
    1)这里我们需要学习seq命令结合for循环的用法。
    2)let命令的计算语法。

    提示:seq命令的语法:
    1.生成序列[1…LAST]
    seq LAST
    例:seq 5 表示序列为 1 2 3 4 5
    [oldboy@student ~]$  seq 5
    1
    2
    3
    4
    5
    2. 生成序列[FIRST…LAST],步长为1
    seq FIRST LAST
    例:seq 2 5表示序列为  2 3 4 5
    [oldboy@student ~]$  seq 2 5
    2
    3
    4
    5
    3.生成序列[FIRST…LAST],步长为INCREMENT
    seq FIRST INCREMENT LAST
    例:seq 2 2 5表示序列为  2 4
    [oldboy@student ~]$  seq 2 2 5
    2
    4
    提示:本例主要使用的是seq及let的用法,有关此法更详细的信息请见老男孩linux运维实战培训的课堂讲解或者评论交流。
    -------------------------------------------------
    ④.seq、tr、sed、bc联手完成计算的方法
    [oldboy@student ~]$  seq 100 | tr '\n' '+'|sed 's#\+$#\n#g'|bc
    5050
    老男孩提示:
    1)注意bc命令的计算用法。
    2)注意seq、tr、sed 3个命令的用法。
    3) 命令解释说明:
    1.seq 100         ==>竖排打印1...100个数字。
    2.tr '\n' '+'     ==>把1...100个数字的结尾换行标签全部换成加号,即得1+2+3...+100+。
    3.sed 's#\+$#\n#g'==>拼接的字符串表达式结尾加号替换为换行(回车)符。
    4.bc    ==>交给bc计算
    有关此法更详细的信息请见老男孩linux运维实战培训的课堂讲解或者评论交流。
    -------------------------------------------------
    ⑤.(())的其它写法
    [oldboy@student ~]$  cat for4.sh
    #!/bin/bash
    sum=0
    for((i=1;i<=100;i++))
    do
            sum=$((i+sum))
    done
    echo $sum
    [oldboy@student ~]$  cat for5.sh
    sum=0
    for((i=1;i<=100;i++))
    do
            sum=$((i+$sum))
    done
    echo $sum
    提示:以上两结果都是对的
    -------------------------------------------------
    ⑥.使用until语句及(())计算
    [oldboy@student ~]$  cat until-1.sh
    #!/bin/sh
    i=1
    until ((i >100 ))
    do
      ((j=j+i))
      ((i++))
    done
    echo $j

    老男孩提示:
    1)这里我们主要学习until条件句的用法。
    2)注意until和while语句的区别。until语句至少执行一次循环即使条件不成立。
    3)循环里的计算式可以使用expr,let等替代之。

    有关此法更详细的信息请见老男孩linux运维实战培训的课堂讲解或者评论交流。
    -------------------------------------------------
    ⑦.使用while循环语句计算
    [oldboy@A ~]$ cat while-1.sh
    #!/bin/sh
    i=1
    while ((i <=100 ))
    do
     ((j=j+i))
     ((i++))
    done
    echo $j
    --------------
    [oldboy@student ~]$  cat while-3.sh
    #!/bin/sh
    i=1
    while [ $i -le 100 ] #same as while [[ $i -le 100 ]] or while [[ $i -le 100 ]]
    do
      let j=j+i
      i=`expr $i + 1`    #same as ((i++)) or  let i=i+1
    done
    echo $j
    老男孩提示:
    1)学习while条件句的用法。
    2)注意while ((i <=100 ))写法及while [ $i -le 100 ]和while [[ $i -le 100 ]]不同替代语法。
    3)注意:i=`expr $i + 1`及((i++))和let i=i+1的几种实现语法。

    有关此法更详细的信息请见老男孩linux运维实战培训的课堂讲解或者评论交流。
    -------------------------------------------------
    ⑧.使用数学公式直接计算※※※※※
    [oldboy@student ~]$  cat gongshi.sh
    #!/bin/sh
    i=100
    echo $((i*(i+1)/2))
    ---------
    [oldboy@student ~]$  cat gongshi-2.sh
    #!/bin/sh
    i=100
    ((sum=i*(i+1)/2))
    echo $sum
    ---------
    [oldboy@student ~]$  echo $((100*(100+1)/2))
    5050

    老男孩提示:
    1)学习公式算法,代码简单而且运算高效。
       注意:上述公式中an表示等差数列的第n项。
      高中数学求和公式 :
      Sn=n(a1+an)/2
      Sn=a1n+n(n-1)d/2 d=公差
    2)对于计算1+2+3...100用前面的方法计算,大家可能感觉不到多大差别,
    但是如果计算1+2+3...10000000的话,前面的除了公司计算的所有方法可能就吃不消了。
    无论是运维还是开发人员都要注意,尽量使用公式或算法计算。

    有关此法更详细的信息请见老男孩linux运维实战培训的课堂讲解或者评论交流。
    3)在计算时,(())计算式比let,expr等更有效率。
    -------------------------------------------------
    ⑨.拼接字符串计算表达式后结合bc求和计算方法
    [oldboy@student ~]$  cat chars.sh
    #!/bin/sh
    chars=0
    for ((i=1; $i<=100; i++ ));do
    chars="$chars+$i"
    done
    echo $chars|bc
    -------------------------------------------------
    ⑩.使用seq和awk实现
    [oldboy@student ~]$  seq 100 |awk '{total+=$1} END {print total}'
    5050
    [oldboy@student ~]$  seq 100 |awk '{total=total+$1} END {print total}'
    5050
    -------------------------------------------------
    ①①.{}数字列表结合tr、bc方法
    [oldboy@student ~]$  echo {1..100}|tr " " "+"|bc
    5050
    老男孩提示:
    1){ }序列的用法
    [oldboy@student ~]$  echo {1..10}
    1 2 3 4 5 6 7 8 9 10
    [oldboy@student ~]$  echo {a..z}
    a b c d e f g h i j k l m n o p q r s t u v w x y z
    提示:上面用法的还有更出色的表现。
    有关此法更详细的信息请见老男孩linux运维实战培训的课堂讲解或者评论交流。

    2)seq默认情况只能是竖立排序列(以\n为分隔符号)
    [oldboy@student ~]$  seq 3
    1
    2
    3
    加个-s分隔符参数看看:
    [oldboy@student ~]$  seq -s " " 3
    1 2 3
    提示:seq仅支持打印数字序列,不支持字符等。

    有关此法更详细的信息请见老男孩linux运维实战培训的课堂讲解或者评论交流。
    -------------------------------------------------
    ①②.{}数字列表结合awk方法
    [oldboy@student ~]$ echo {1..100}|tr " " "\n"|awk '{total+=$1} END {print total}'
    5050
    -------------------------------------------------
    ①③.{}数字列表for循环及计算命令方法
    [root@student scripts]# cat for6.sh
    #!/bin/sh
    sum=0
    for num in `echo {1..100}`
    do
        sum=`expr $sum + $num`
    done
    echo $sum
    -------------------------------------------------
    ①⑤.seq结合bc较少字符计算方法(压轴了,最少字符实现方法)
    [oldboy@student ~]$ seq -s + 100|bc
    5050
    [oldboy@student ~]$ seq -s "+" 100|bc
    5050
    老男孩提示:
    1)注意seq命令-s分隔符参数的用法。
    2)此法比法④强的不是一点半点。值得我们研究学习。
    有关此法更详细的信息请见老男孩linux运维实战培训的课堂讲解或者评论交流。
    本想⑩全⑩美就得,结果没打住!
    ==老男孩个人介绍:

        老男孩,资深Linux系统运维网站架构专家、高级运维总监。从事一线网站运维及系统架构管理近12年,曾就职于若干个大规模高并发访问量的行业门户网站,并为多家互联网公司做过技术顾问,擅长大规模网站系统架构解决方案。于2007年开办了国内首个linux运维实战培训私塾式精英教育机构。并将个人的网站运维架构及教育领域的经验成功应用到IT教育领域教学工作。累计受益学生千余人(其中面授学生达200余人,部分学生就职于淘宝、阿里巴巴、百度、开心网、激动网、小米科技、土豆、酷六、sohusina、金山、尚德,chinacache,快网、遨游、赶集、拉手网,窝窝团、就业工场、联通、电信等众多国内知名公司)。

    老男孩目前从事的工作:

    1) 老男孩linux运维实战培训机构精英办学。

    2)提供企业技术培训及技术顾问服务。

    3)提供各种网站系统架构(数据库)解决方案。

    4)提供linux技术方向企业雇员双向猎头、HR服务

    5)提供优质linux运维原创系列视频。

    6linux运维及开发类图书写作。

    老男孩的联系方式:

    名字:老男孩

    QQ:31333741 

    信箱:31333741@qq.com

    个人博客:

    http://oldboy.blog.51cto.com(运维技术分享地)

    个人微博:

    http://t.qq.com/tt31333741(运维思想分享地)

    http://weibo.com/oldboy8

    网站运维交流群: 114580181 45039636 37081784
    ======================================================
    老男孩linux运维实战培训咨询方式
    咨询:QQ:357851641 31333741 70271111
    电话:18911718229
    网站地址:http://www.etiantian.org  http://oldboy.cc
    blog:http://oldboy.blog.51cto.com
    ======================================================

    (全文完)

    转载于:https://my.oschina.net/willSoft/blog/39792

    展开全文
  • 1)从1到100计算除他们结果。开始编写脚本。 (2) 开始测试。正确得出了结果。 2. until循环 until循环和while循环相反, until循环时只要条件判断是不成立则进行循环,并执行循环程序。一旦循环条件...

    1. while循环

    • while循环是不定循环,也称作条件循环。只要判断式成立,循环就会一直继续,直到条件判断式不成立,循环才会停止。这就和for的固定循环不太一样。

    语法格式:

    while [ 条件判断式 ]
    	do
    		程序
    	done
    

    举个栗子:

    • (1)从1加到100,计算除他们的结果。开始编写脚本。
      在这里插入图片描述
      (2) 开始测试。正确的得出了结果。
      在这里插入图片描述

    2. until循环

    • until循环和while循环相反, until循环时只要条件判断是不成立则进行循环,并执行循环程序。一旦循环条件成立,则终止循环。

    语法格式:

    until [  条件判断式 ]
    	do
    		程序
    	done
    

    举个栗子:

    • (1) 从1加到100,计算除他们的结果。开始编写脚本。其实这个栗子跟while的那个栗子是一样的,只是把while改成了until,-le改成了-gt。
      在这里插入图片描述
      (2) 开始测试。计算的结果为5050
      在这里插入图片描述

    3. 总结

    • (1) While更加适合不定量的循环(不知道循环次数),进行条件循环。While 、until 、for 这三种循环都可以相互转改写的,只是有一些语法结构更适合一些for循环,一些更适合while循环,看应用场景。
    • (2) 脚本语言,脚本语言的好处就是所见即所得,写完的脚本语言都不需要编译(相当于idea编写Java时自动的给你编译好了,只要运行就好了)就会直接运行,不是不需要编译,而是在执行的同时进行编译,省略简化了编译过程,好处是编程更加简单,坏处是效率会更慢,比c比java需要编译在执行的语言要慢。
    • (3)这样的语言并不适合进行大量的数据运算, shell脚本最大的好处是帮助管理员减少重复操作,或者说帮助管理员来进行系统的运维工作。**通过前面 If、for的栗子,比如判断apache服务是否启动。如果不启动,则通过脚本把apache服务启动,然后把启动记录在日志。这些脚本通过定时任务来执行。for循环,批量添加用户,批量删除用户。
    • (4) Shell基础:Shell基本功能,shell变量的定义,shell的环境变量的定义,shell的正则表达式,test测试语句,然后就是基本流程。这个语言的基本内容。这些熟练了,工作当中写一些小脚本还是没问题的。

    4. 建立编程思想

    (1) 对Linux的了解加深,对Linux练习量增加,更理解了需要程序帮助我们干什么,然后回过头再来写程序,就会发现比较简单了。

    (2) 学习,练习,积累的过程,最重要的还是练习。 计算机技术不是学出来的,而是练出来的。说明了联系的重要性。

    展开全文
  • Shell编程之循环语句 for while until一....计算1到100所有整数的和 #!/bin/bash sum=0 for i in {1..100} do sum=$[$sum + $i ] done echo $sum #!/bin/bash #.求从1到100所有整数的偶数和、奇数和 su

    在这里插入图片描述

    一. 循环语句

    1.for语句结构

    for 语句用来 遍历 集合或列表。
    shell 中有两种用法:

    for i in $(seq 1 5);for i in {1…5};for i in $(seq 5)
    for ((i=1;i<=5;i+=2));

    • 读取不同的变量值,用来逐个执行同一组命令

    在这里插入图片描述

    计算从1100所有整数的和
    
    #!/bin/bash
    
    sum=0
    
    for i in {1..100}
    do
            sum=$[$sum + $i ]
    
    done
            echo $sum
    
    
    
    #!/bin/bash
    #.求从1100所有整数的偶数和、奇数和
    sum=0
    
    for ((i=1; i<=100; i+=2))
    do
            sum=$[ $sum + $i ]
    done
            echo "奇数和为:$sum"
    
    sum1=0
    
    for ((a=2; a<=100; a+=2))
    do
            sum1=$[ $sum1 + $a ]
    
    done
            echo "偶数和为:$sum1"
    

    2.while语句结构

    • 重复测试某个条件,只要条件成立则反复执行
    • 在这里插入图片描述
      在这里插入图片描述
    #!/bin/bash
    
    a=1
    
    while [ $a -le 10 ]
    do
            echo $a
            a=$[ $a + 1 ]
    
    
    done
    echo "最后的值为:$a"
    
    
    #!/bin/bash
    # 批量添加用户 以stu开头,20个用户 stu1,stu2  密码12313
    a=1
    
    while [ $a -le 20 ] do
            useradd stu$a
            echo 123123 | passwd --stdin stu$a
            a=$[ $a + 1 ]
    
    done
    
    #!/bin/bash
    # 猜价格 中奖品
    sorce=$[$RANDOM % 1000]
    
    a=1
    num=0
    while [ $a -lt 2 ]
    do
            read -p "请输入你猜的价格(1-999之间):" price
            if [ $price -eq $sorce ];then
            echo "恭喜你猜对了!"
            num=$[ $num + 1 ]
            a=$[ $a + 1 ]
    
            elif [ $price -gt $sorce ];then
            echo "你猜高了!"
            num=$[ $num + 1 ]
    
    
            elif [ $price -lt $sorce ];then
            echo "你猜低了!"
            num=$[ $num + 1 ]
            fi
    
    done
    

    3.until语句结构

    • 重复测试某个条件,只要条件不成立则反复执行

    在这里插入图片描述

    #!/bin/bash
    #不满足a>10 的都输出出来
    a=1
    
    until [ $a -gt 10 ]
    do
            echo $a
            a=$[ $a + 1 ]
    
    
    done
    
    • 如何调试 bash 脚本?
      将 -xv 参数加到#!/bin/bash 后
    展开全文
  • 计算1到100的和 #!/bin/bash i=0 a=0 while [$i-le100]  do  a=$(($a+$i))  i=$(($i+1))  done echo"和是:$a";     until循环,与while相反

    while语句

    计算1到100的和

    #!/bin/bash

    i=0

    a=0

    while [$i-le100]

        do

            a=$(($a+$i))

            i=$(($i+1))

        done

    echo"和是:$a";

     

     

    until循环,与while相反

    #!/bin/bash

    i=0

    a=0

    until [$i-gt100]

        do

            a=$(($a+$i))

            i=$(($i+1))

        done

    echo"和是:$a";

     

    展开全文
  • 目录 前言 while循环的应用 while循环的嵌套 ...1)计算1~100的累计 i = 1 sum = 0 while i<=100: sum = sum + i i += 1 print("1~100的累积为:%d"%sum) 2)计算1~100之间偶数...
  • C语言编程100例精选源码

    热门讨论 2009-10-29 01:31:44
    共分为8篇,包括基础篇、数值计算与数据结构篇、文本屏幕与文件操作篇、病毒与安全篇、图形篇、系统篇、游戏篇、综合篇,基本涵盖了目前C语言编程的各个方面。  全部以实例为线索展开讲解,注重对实例分析、对...
  • T-SQL语言编程

    2016-10-31 21:07:42
    1.利用循环结构计算1到100的和(注意语句块标识BEGIN......END)DECLARE @SUM INT,@I INT SELECT @I=1,@SUM=0 WHILE @I<=100 BEGIN SELECT @SUM=@SUM+@I SELECT @I=@I+1 END PRINT'1.....100的和为:'+CONVERT...
  • 循环与结构化命令 最近正在看LinuxShell编程从初学精通这本书,写的很详细,每一章节后面都有对应的习题,自己也亲手写...、使用for 循环计算100以内所有偶数的和,然后用while循环和until循环来实现这个计...
  • sh5.while 脚本练习

    2016-11-21 16:51:00
    脚本编程:  顺序结构  选择结构  if, case  循环结构  for,while,until ...while循环:适用于循环次数未知场景 ...while CONDITION;...while 练习: ...1. 计算1到100正整数 1 一.while ...
  • 2013-01-05Linux命令行shell脚本编程宝典 11部分 Linux命令行 15 第1章 Linux shell入门 --已经发布wordpress 15 1.1 什么是Linux 15 1.1.1 深入研究Linux内核 -- 已发布wordpress 15 1.1.2 GNU实用程序 --...
  • T-SQL编程基础

    2020-03-09 10:49:58
    --练习题,计算1-100之间所有奇数的和 --思路,1.声明两个变量,一个用于计数1-100,一个用于累计和 --2.循环遍历1-100之间所有的整数++ --3.if判断,是否是奇数。 i%2<>0 --4.如果是,加累积和的变量中去 ...
  • 输入一个整数矩阵,计算位于矩阵边缘元素之。所谓矩阵边缘元素,就是第一行最后一行元素以及第一列最后一列元素。 输入 第一行分别为矩阵行数m列数n(m < 100,n < 100),两者之间以一个空格...
  • 20.10 for循环shell脚本可以算是一种简易的编程语言了,脚本中的循环也是不能缺少的... docommanddone案例1计算1到100所有数字的和。1 编写脚本先把1-100的数字循环打印出来[root@AliKvnshell]#vimsh-for1.sh #!/bi...
  • 5.程序功能:求1到400间,同时能被37整除个数。程序中有一处错误。改正错误,使它能输出正确结果。 Private Sub Form_Click() Dim count As Integer Dim x As Integer For x = 1 To 400 '下一行程序...
  • 《C#高级编程(第7版)》顶级专家作者团队首先复习了C#基础知识,之后详细讲解了该语言架构中所有新增功能,使读者能立即开始编写 Windows应用程序ASP.NET Web应用程序。 本书几乎涵盖C#语言所有功能,...
  • Java经典编程300例(code)

    千次下载 热门讨论 2013-01-09 10:26:53
    实例027 使用while循环计算1+ 1/2!+1/3!…1/20! 36 实例028 使用for循环输出空心菱形 38 实例029 终止循环体 39 实例030 循环体过滤器 41 第5章 数组及其常用操作 43 实例031 获取一维数组最小值 44 实例032 ...
  • 代码 #include //该头文档中有单片机内部资源符号化定义,其中包含 P3.1 该头文档中有单片机内部资源符号化定义, 该头文档中有单片机内部资源符号化定义 void main( void ) { While( 1 ) { P3_1 = 1; P3_1 =...
  • perl编程24学时教程.rar

    2019-08-18 00:13:24
    本书循序渐进、深入浅出地介绍了Perl主要特性及用Perl进行CGI编程的知识。全书包括24个学时内容一个附录,共分四部分。第一部分主要讲述Perl基本概念,第二部分重点介绍Perl一些高级特性,第三部分介绍如何...
  • PERL编程24学时教程

    2011-10-21 18:44:20
    本书循序渐进、深入浅出地介绍了Perl主要特性及用Perl进行CGI编程的知识。全书包括24个学时内容一个附录,共分四部分。第一部分主要讲述Perl基本概念,第二部分重点介绍Perl一些高级特性,第三部分介绍如何...
  • 1计算阶乘的和v2.0(4分) 这里可以让m在100到999之间进行筛选,将所有符合条件的数枚举出来 #include <stdio.h> long Fact(int n); int main() { int m=100; while(m++<1000){ int a=m/100; int b...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 174
精华内容 69
关键字:

while编程计算1到100的和