日期: 2015年09月13日
流程控制
循环语句:for, while, until
循环:将循环体代码执行0、1或多次
进入条件:进入循环的条件
退出条件:循环终止的条件
<<========================================【for循环】========================================>>
for循环:
for VARIABLE in LIST; do
循环体
done
进入条件:列表非空
退出条件:当列表遍历结束
LIST: 是由一个或多个空格或换行符分隔开的字符串组成:
把列表的每个字符串逐个赋值给VARIABLE表示的变量
LIST的生成方法:
(1) 整数列表
(a) {start..end}
(b) $(seq [start[[step]]end])
(2) 直接给出列表
(3) glob
(4) 根据命令生成
示例:
使用for循环添加10个用户,user1-user10
运行脚本测试:
<<======================================【while循环】======================================>>
while循环:
while CONDITION; do
循环体
控制变量的修正表达式
done
进入条件:当CONDITION为"真";
退出条件:当CONDITION为"假";
示例1:
使用while循环求100以内所有正整数之和
运行脚本测试:
示例2:
使用while循环打印九九乘法表
运行脚本测试:
<<======================================【until循环】======================================>>
until循环:
until CONDITION; do
循环体
循环控制变量的修正表达式
done
进入条件:当CONDITION为"假"时
退出条件:当CONDITION为"真"时
示例:
使用until循环求100以内所有正整数之和
运行脚本测试:
<<======================================【循环控制】======================================>>
循环控制:
continue [n]: 提前结束本轮循环,而直接进入下一轮
break [n]: 提前结束循环
使用格式:
while CONDITION; do
if CONDITION2; then
break [n]
fi
done
while CONDITION; do
...
if CONDITION2; then
continue [n]
fi
....
done
死循环:
while ture; do
循环体
if CONDITION; then
break
fi
done
until false; do
循环体
if CONDITION; then
break
fi
done
示例1:
求100以内所有偶数之和
运行脚本测试:
示例2:
给脚本传递一个用户命名,如果该用户登录到该系统,则显示其已登录,如果没有检测到该用户
登录,则显示该用户未登录,休眠3秒后继续检测,如此重复,直到用户登录为止才结束循环。
运行脚本测试:
登录用户:
此时,检测到该用户已登录,则显示用户已登录,然后结束循环
<<======================================【特殊用法】======================================>>
while、for循环的特殊用法
while循环的特殊用法:
遍历文件的每一行:
while read VARIABLE; do
循环体
done < /PATH/FROM/SOME_FILE
示例:
找出UID为偶数的所有用户,显示整行用户信息
运行脚本测试:
for循环的特殊用法:
for ((expr1;expr2;expr3)); do
循环体
done
expr1:定义控制变量,并初始赋值
expr2:循环控制条件
进入条件:控制条件为"真"
退出条件:控制条件为"假"
expr3:修正控制变量
示例:
给变量i赋值=1,在变量i的赋值小于30时,每次往自身+1,直到i的赋值等于30时退出循环,
每一次循环都与数字5相乘,得出以下结果。