在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"
- .此方法用的是C语言风格的for循环。
(())
这个两个括号用于C语言表达式,还可以用于计算,其中涉及到运算符号可以不使用\
转义符号。 - C语言表达式为for(表达式1;表达式2;表达式3)
下面来看看它的执行过程:
(1).求解表达式1。
(2).求解表达式2。若其值为真,则执行 for 语句中指定的内嵌语句,然后执行第3步;若表达式2值为假,则结束循环,转到第5步。
(3).求解表达式3。
(4).转回上面第2步继续执行。
(5).循环结束,执行 for 语句下面的语句。 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"
- while要满足
[]
中的条件才可以执行do
后面的语句否则就会直接跳出while循环 - 步骤为: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
- seq为linux外部命令意为产生从某个数到另外一个数之间的所有整数。比如seq 1 100 就产生1-100之间所有整数
- let 是bash计算工具,let++自加 let–自减,let sum+=a和
let sum= s u m + sum+ sum+a一样 只不过是缩写。 - expr也是计算命令不过其运行速度比let慢很多
#!/bin/bash
sum=0
for a in `seq 1 100`
do
expr `sum=$sum+$a`
expr `a=$a+1`
done
echo $sum