1.for循环语句
for循环的运作方式:
- 是将串行的元素意义取出,依序放入指定的变量中
- 然后重复执行含括的命令区域(在do和done 之间)
- 直到所有元素取尽为止。
串行是一些字符串的组合,彼此分隔符(如空格符)隔开,这些字符串称为字段。
for 变量 in 串行
do
执行命令
done
1.1 通过数字的方式
实例1:循环输出所跟数字。
for i in 1 4 5
do
echo "$i"
done



实例2:
for i in {1..10}
do
echo "$i"
done


实例3:倒数输出
for i in {10..1}
do
echo "$i"
done


1.2 通过seq命令
seq 用于生成从一个数到另一个数之间的所有整数。
用法:
seq [选项] .. 尾数
seq [选项] .. 首数 尾数
seq [选项] .. 首数 增量 尾数
选项:
-f:指定输出格式
-w:指定输出数字同宽,与-f部分作用相似,不可与-f选项同时使用
-s:指定分隔符,默认分隔符是/n(回车)
首先测试-f选项:

测试-w选项:

测试-s选项:

现在可以将seq使用在for循环中:
从一数到十:


输出从1-10中的单数:


输出从1-10中的双数:


注意seq不能倒数:


1.3 for循环中的数值运算
我们可以在for循环中像c语言中一样进行计算循环:
for ((i=1;i<10;i++)) # 循环i-1次
do
循环内容
done


1.4 字符形式的循环
可以将字符按照顺序执行:
for i in {a..e}
do
执行内容
done


2.while循环语句
while循环的语法:
while 条件测试
do
执行命令
done
测试条件只要为真(True)就会一直循环执行命令:



我们更改脚本当用户输入exit的时候就停止循环退出:
这里可以在条件处使用test语句判断输入:
[ ! "$WORD" = "exit" ] # 当变量WORD的值不等于exit时为真,继续循环


或者是像for一样的数值循环,但是这种方式不如直接使用for:
计算从1加到10的值:
#!/bin/bash
declare -i i=1 # 声明i和sum为整数型
declare -i sum=0 #
while ((i<=10)) # 只要i值小于或者等于10,就执行循环
do
let sum+=i # sum+=i和sum=sum+i是一样的,sum累加上i
let i++ # i的值递增1,此行是改变条件测试的命令,一旦i大于10,可终止循环
done
echo $sum # 显示sum的值为55
用while写一个九九乘法表:
#!/bin/bash
declare -i a=1 # 声明函数a、b、i为整数
declare -i b=1
declare -i i=0
while (( $a <= 9 )) # 设定被乘数最高为9
do
while (($b <= $a)) # 设定乘数小于被称数
do
i=$a*$b # 计算结果值
echo -en "$b * $a = $i " # 输出乘法
b=$b+1 # 乘数加1
done
echo -e "\n" # 换行
a=$a+1 # 被乘数加一
b=1 # 乘数重制为1
done
3.until循环语句
while循环的条件测试是测真值,until循环则是测假值:
until 条件测试
do
执行命令
done
当测试条件为假(false)时一直循环,当为真(true)时退出循环:



即当条件成立停止循环:


while 条件 条件成立继续循环
until 条件 条件成立停止循环
接下来使用until完成一个九九乘法表:
#!/bin/bash
declare -i a=1 # 声明函数a、b、i为整数
declare -i b=1
declare -i i=0
until (( $a > 9 )) # 设定被乘数大于9时退出
do
until (($b > $a)) # 设定乘数大于被乘数时退出
do
i=$a*$b # 计算结果值
echo -en "$b * $a = $i " # 输出乘法
b=$b+1 # 乘数加一
done
echo -e "\n" # 换行
a=$a+1 # 被乘数加1
b=1 # 乘数重置为1
done
版权声明:本文为mango_kid原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。