目录
一、for循环语句
二、While循环
三、双层循环 三层循环
四、exit、continue和break
一、for循环语句
读取不同的变量值,用来逐个执行同一组命令
for循环经常使用在已经知道要进行多少次循环的场景
格式:
for 变量名 in 取值列表
do
命令序列
done
示例1: 循环出0到10之间的整数
法一:
#!/bin/bash
for i in {1..10}
do
echo $i
done
法二:
#!/bin/bash
for i in $(seq 1 10)
do
echo $i
done
示例2:求1..10奇数和
#/bin/bash
sum=0
for i in {1..10..2}
do
sum=$[sum+i]
let i++
done
echo "10以内的奇数和为:$sum"
示例3:批量创建用户并修改密码
#!/bin/bash
for user in {1..10}
do
echo stu${user}|xargs -n1 useradd
echo "123123"|passwd --stdin stu${user}
done
示例4:批量改名
#!/bin/bash
cd /data1
for i in *
do
name=`echo $i |cut -d "." -f1`
mv $i ${name}.bak
遍历 迭代 递归
二、While循环
For是遍历的循环
而while循环是判断条件,从而进行指令
Demo用while批量添加用户
解
Demo2
解:
用let a++等效于exit
Until循环
Demo1:
输出1到10的和:
for循环一般在正常执行的时候是一个进程串行执行的取值列表
多线程并行执行
Wait是为了等待上面的命令执行完了之后,再去执行后面的cat命令,如果没有wait后面的语句是不会等待后台进程的,会造成一些需要有上下文依赖关系的程序执行错误
For循环的分隔符
IFS 默认是 空格 制表符\t 换行符\n
For循环的三个分割符号
Demo:
像PATH这样的文件里面路径,想要分行输出,是以冒号为分隔符
如何用while循环去读取文件
#line为变量名
综合格式
While read变量名
do
Done
For while until 都是单层循环
三、双层循环 三层循环
外层循环没执行一次,内层循环都要全部执行完毕后,下一次外层循环才能再执行
把内层循环看做是外层循环的一个命令语句
Exit 退出shell脚本进程exit执行后,后面的语句都不会执行
执行结果:
外部执行一次,内部执行三次
Break 跳出单层循环,break2 跳出2层循环,循环以外的语句,仍然会执行,循环内的break后面的语句仍然会执行
执行结果
外部循环执行5次,内部执行3次
Continue 用于终止某次循环的执行,但不会完全终止整个循环
Demo
制作一个九九乘法表:
外循环表示行
内循环表示列
采用制表符可以很清楚的列出表格
四、exit、continue和break
exit:退出shell脚本进程。Exit执行后,脚本后的语句都不会再执行。
break 有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止。 这时我们可以使用break来完成。break用于完全结束一个循环,跳出循环体执行循环后面的语句。
continue continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。 可以理解为continue是跳过当次循环中剩下的语句,执行下一次循环。
continue和break使用方法:
break:
1、语法 break 将用于以下break语句退出循环:
2、break n 这里n指定的第n个封闭的循环退出。
continue:
1、语法 continue 和break语句一样,一个整数参数可以给continue命令跳过嵌套循环的命令。
2、continue n 这里n指定第n个封闭循环 continue 。
Exit(0-255) 退出shell脚本,并且可以返回指定状态码
Break 指的是跳出当前循环体,去执行循环后面的操作
Continue