while和for循环都能实现循环语句,很多情况下可以互相代替,还有一种是until循环
while当(条件成立)执行,until到(不断的执行循环,一直到某个条件为真就停止,退出循环,为假。就继续执行,
因此有些时候,可以用while循环,也可以用until循环
判断是否由用户登录,如果由用户登录就退出
用su 切换时看不到用户登录的,用户登录是可以看到的
如果发现wang用户,就发生一个登录信息,until
退出登录
就一直监控,是死循环
用wile 写
执行循环的时候,很多向提前中断某个循环,可以用continue ,break
如果是continue ,表示的是结束本次循环(如100此循环,需要中断50次,下一次就从51次开始)
break提前结束的不是第几轮循环,而是整个循环
continue
break
各种循环可以进行嵌套,所以continue后可以跟上数字,数字表示可以提前结束第几层的本轮循环,
break,表示结束地几层循环,
第几次代表,如果用while1 嵌套while2,那么里面的是第一次,外面的是第二层
打印10次,每次跳过5
2表示结束的不是本轮的,是外面那层
可以用bash -x跟踪
改成break是什么意思
改成2
shift可以把参数列表往左移,默认是1,可以移动多次
比如批量创建用户
until是为真,就跳出循环
$1为空,就跳出第一个参数
位置参数用shift做,往左移,只用关心$1就可以了
当位置参数 $#大于0的时候,就打印一边,打印之后往左移一个,然后再次去判断是否大于0,大于0再打印
2个2个移位
一般无限循环里面加判断条件,跟break跳出循环
死循环,用户必须输入东西才能退出
2.生成猜字游戏,要判断用户输入是否数字
判断输入是否数字用正则表达式
另外一种思路
第三种思路
判断是否是数字
while逐行处理的功能,read line,line的值就是</PATH/FROM/SOMEFILE里的一行
第一次执行,把文件里的第一行读进来,处理完再把文件的第二行读进来
所有line的变量就是存的文件里的某一行
uid为偶数的用户名取出来
对于命令执行结果做判断,把所有大于10 的利用率机器
逐行处理
awk默认逐行处理