example 2:该脚本通过不同的循环来说明1-100的累加。比如for、while、until等。
先使用while。while是当条件为真时执行do到done的程序段。为假时退出程序段循环。
#!/bin/bash
#program:use while to add 1 to 100
#history:2013-02-20 ASK first release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
i=0
s=0
while [ $i -lt 100 ]
do
i=$(($i+1))
s=$(($s+$i))
done
echo "1+2+3...+$i=$s"
或者使用until。和while的区别是until当遇到条件为真时退出当前循环。一定要和while分清
#!/bin/bash
#program:use until to add 1 to 100
#history:2013-02-20 ASK first release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
i=0
s=0
until [ $i -eq 100 ]
do
i=$(($i+1))
s=$(($s+$i))
done
echo "1+2+3...+$i=$s"
或者使用for循环来执行 。
#!/bin/bash
#program:use for to add 1 to 100
#history:2013-02-20 ASK first release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
s=0
for((i=0;i<=100;i++))
do
s=$(($s+$i))
done
echo "1+2+3...+$i=$s" ######这行执行后会输出1+2+3...+101=5050。这个101是和i++
注释:
第一:先说说运算。运算的结构是$(( ))。比如a=$(($b+$c))意思就是把b和c的值相加赋给a。再如((num=2#11111111))这个是把8个1的二进制转换为十进制。也就是说双左小括号((和双又小括号))组成运算的格式。相乘的话就是a=$(($b*$c))。
第二:再说说这个eq、lt、gt等。记住e是等于、l是小于、g是大于就是了很好记住的。equal(等于)greater than(比..大于)less than (比 小于)。
第三:最后说说for的第二种格式也就是最后一个例子中提及的for((初始值;限制值;步长))格式。至于i++和++i的却是有不同的自己可以去网上看看。
回顾:
1、结构:if、for、while、until等以及各自的区别
2、测试和关系语句:test和[]、关系的处理 &&、||、!、-a、-o等等
3、赋值:read -p、直接赋值的、重复赋值的。
4、引号:单引号、双引号、反引号等区别