当进行脚本编程时,语句执行的流程控制通常有三种:
l 顺序执行
l 选择执行
l 循环执行
条件选择if:
if语句可以进行嵌套
if 判断条件;then
条件为真的分支代码
elif 判断条件;then
条件为真的分支代码
elif 判断条件;then
条件为真的分支代码
else
以上情况都不符合的处理代码
fi
逐条件进行判断,当第一次遇到为”真”条件时,执行其分支,结束整个if语句
case 变量引用 in
case1)
分支
;;
case2)
分支
;;
*)
默认分支
;;
esac
case支持glob风格的通配符
l * 支持长度任意字符
l ? 任意单个字符
l [] 指定范围内的任意单个字符
l a|b a或b
循环执行
将某段代码重复运行多次
重复运行多少次:
循环次数事先已知
循环次数事先未知
有进入和退出条件
for循环
for 变量名 in 列表:do
循环体
done
列表生成方式
1) 直接给出列表
2) 整数列表
a) {start,end}
b) $(seq [start,[step]] end)
3) 返回列表的命令
$(command)
4) 使用glob *.sh
5) 变量引用
$@ $*
while循环
while condition; do
循环体
done
condition: 循环控制条件,进入循环之前,先做一次判断;每一次循环之后会再次做判断,条件为true,则 执行一次循环,直到条件测试状态为false终止循环,condition一般应该有循环控制变量,而此 变量的值会在循环体不断地被修正
进入条件: condition true
推出条件: condition false
until循环
until condition ; do
循环体
done
进入条件: condition false
退出条件: condition true
循环控制语句
continue[N]:提前结束第N层的本轮循环,而直接进入下一轮判断,最内层为第1层
while condition1;do
cmd1
…
If condition2;then
continue
fi
cmdn
…
done
break
break[N]: 提前结束第N层循环,最内层为第1层
while condition1;do
cmd1
…
if condition2;then
break
fi
cmdn
…
done
习题
1、判断/var/目录下所有文件的类型
2、添加10个用户user1-user10,密码同用户名
3、/etc/rc.d/rc3.d目录下分别有多个以K开头和以S开头的文件;分别读取每个文件,以K开头的文件输出为文件加 stop,以S开头的文件输出为文件名加start;
“K34filename stop”
“S66filename start”
4、写一个脚本,提示输入正整数n的值,计算1+2+3+…n的总和
5、写一个脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态
fping -a -g 192.168.0.0/24 2>/dev/null
6、打印九九乘法表
7、求100以内所有正整数之和
8、通过ping命令探测172.16.250.1-254范围内的所有主机的在线状态,统计在线主机和离线主机各多少。
9、利用变量RANDOM生成10个随机数字,输出这个10数字,并显示其中的最大者和最小者
10、打印国际象棋棋盘
原创文章,作者:Stupid_L,如若转载,请注明出处:http://www.178linux.com/36987