shell编程—1-100的加法计算以及相关知识详解

  在shell环境中使用各种方法实现1-100的加法计算,这只是一个引子,其主要是各种方法知识讲解,涉及到for循环,while循环,seq,let,expr等计算命令等。

一. for循环

    #!/bin/bash
    sum=0
    for ((a=1;a<=100;a++))
    do
        sum=$((sum=sum+a))
    done
        echo "sum"
  1. .此方法用的是C语言风格的for循环。 (())这个两个括号用于C语言表达式,还可以用于计算,其中涉及到运算符号可以不使用\转义符号。
  2. C语言表达式为for(表达式1;表达式2;表达式3)
    下面来看看它的执行过程:
    (1).求解表达式1。
    (2).求解表达式2。若其值为真,则执行 for 语句中指定的内嵌语句,然后执行第3步;若表达式2值为假,则结束循环,转到第5步。
    (3).求解表达式3。
    (4).转回上面第2步继续执行。
    (5).循环结束,执行 for 语句下面的语句。
  3. sum=$((sum=sum+a))是把for循环输出的1-100的数全部相加

二. while循环

    #!/bin/bash
        sum=0
        a=1
        while [ $a -le 100 ]
        do   
             sum=$(($sum+$a))
             a=$((a+1))
         done
             echo "$sum"
  1. while要满足[]中的条件才可以执行do后面的语句否则就会直接跳出while循环
  2. 步骤为:sum先+a,然后sum=$(($sum+$a))意为sum进行重新赋值,将新的sum赋为sum+a,然后a继续+1,a=$((a+1))将a也重新赋值,看a是否满足小于100,满足就继续循环,将上一次的赋值带到下一次循环中,例如第一次循环为sum=0+1=1,a=1+1=2,然后第二次就是sum=1+2,a=2+1,一直循环直到
    sum=1+2+…+100 =5050

三. seq、let、expr讲解

    #!/bin/bash
    sum=0
    for a in `seq 1 100`
    do
      let sum+=a
      let a++
    done
    echo $sum
  1. seq为linux外部命令意为产生从某个数到另外一个数之间的所有整数。比如seq 1 100 就产生1-100之间所有整数
  2. let 是bash计算工具,let++自加 let–自减,let sum+=a和
    let sum= s u m + sum+ sum+a一样 只不过是缩写。
  3. expr也是计算命令不过其运行速度比let慢很多
#!/bin/bash
sum=0
for a in `seq 1 100`
do  
     expr `sum=$sum+$a`
     expr `a=$a+1`
done
echo $sum

你可能感兴趣的:(shell,Linux)