第十章 流程控制之for循环
1 语法
#===========》Shell风格语法
for 变量名 [ in 取值列表 ]
do
循环体
done
#===========》C语言风格语法
for ((初值;条件;步长))
do
循环体
done
2 循环控制及状态返回值的应用实践
2.1 break案例
#!/bin/bash
for i in {1..5};do
echo $i
if [ $i == 3 ];then
break
fi
echo $i
done
echo "ok"
[root@xujun1270 ~]# sh break.sh
1
1
2
2
3
ok
脚本中,本意是要循环执行1~5,但是当i等于3时,跳出循环,后面的4和5就不会执行了,但是因为只是跳出循环,所以脚本还是会继续执行,所以就出来后面的ok
2.2 continue案例
#!/bin/bash
for i in {1..5};do
echo $i
if [ $i == 3 ];then
continue
fi
echo $i
done
echo "ok"
[root@xujun1270 ~]# sh continue.sh
1
1
2
2
3
4
4
5
5
ok
continue就是在循环中,跳过的是本次循环,而不是整个循环,所以只跳过了3,但是循环还会执行下去
2.3 exit案例
#!/bin/bash
#
for i in {1..5};do
echo $i
if [ $i == 3 ];then
exit
fi
echo $i
done
echo "ok"
[root@xujun1270 ~]# sh exit.sh
1
1
2
2
3
exit就是直接退出整个shell脚本
3 案例
3.1 案例1:shell风格的for
for i in {1..10};do
echo $i
done
3.2 案例2:c语言风格的for
for ((i=1;i<=10;i++));do
echo $i
done
3.3 案例3:批量修改文件名
#!/bin/bash
for n in `ls|grep "html$"`;do
mv $n `echo $n|cut -c 1-11`oldgirl.html
done
3.4 案例4:批量创建用户和密码
#!/bin/bash
read -p "请输入创建的用户名信息: " name
read -p "请输入创建的用户数量: " count
for i in `seq -w $count`
do
echo $name$i
useradd $name$i &>/dev/null
echo 123456 | passwd --stdin $name$i &>/dev/null
id $name$i &>/dev/null
[ $? -eq 0 ] && echo "$name$i create is ok" || echo "$name$i create is failed"
done