Shell脚本编程之While循环详解

我们Shell脚本的编程结构有三类,分别是:

1,顺序结构

2,选择结构

if语句

case语句

3,循环结构

for循环

while循环

until循环

今天我们就来说一说while循环,while循环和for循环不同的地方在于,for循环中我们是知道循环的次数的,但是我们的while循环适用于循环次数未知的场景,while循环必须得有进入循环的条件和退出循环的条件

使用格式:while  condition(进入循环的条件,满足该条件就进行循环);do

expression

...

while循环不像for循环那样可以遍历列表,我们使用while循环的时候必须指定变量循环的条件,还得指定退出条件

练习:写一个脚本,要求

利用while循环,来实现1-100的和。

脚本内容:

shell 脚本 docker exec shell 脚本 while_脚本

脚本执行结果:

shell 脚本 docker exec shell 脚本 while_linux_02

练习:写一个脚本,要求

让用户可以输入一串字母,无论用户输入什么字母,我们的脚本都可以讲用户的输入的字母转换为大写的,直到用户输入quit才退出脚本,否则一直和用户交互下去。

脚本内容:

shell 脚本 docker exec shell 脚本 while_编程_03

脚本执行结果:

shell 脚本 docker exec shell 脚本 while_编程_04

练习,写一个脚本,要求

每隔3秒去检查一下hadoop用户有没有登录系统,如果登录了就直接退出脚本,如果没有登录就一直检查下去,并显示hadoop用户没有登录。

脚本内容:

shell 脚本 docker exec shell 脚本 while_编程_05

脚本执行结果:

shell 脚本 docker exec shell 脚本 while_shell_06

我们在进行下一个脚本之前,先来讲一个好玩的知识点:

我们的echo命令有一个-e选项,它的作用是用来生效启用逃逸符(反斜线开头的叫做逃逸符),逃逸符\033表示Ctrl键:

echo   -e  "\033[1mHello\033[0m,world."

->第一个逃逸符到第二个逃逸符(也称为结束符)之前的部分为要改变的部分,其余部分不做改变,比如:

shell 脚本 docker exec shell 脚本 while_while循环_07

1表示字体加粗

两位整数用来控制颜色:

3对应前景色

31->红前景色

32->绿前景色

33->黄前景色

...

总共其中颜色

shell 脚本 docker exec shell 脚本 while_while循环_08

4对应背景色

...

同样对应七种颜色

shell 脚本 docker exec shell 脚本 while_编程_09

我们的前景色、背景色以及我们的字体可以同时来使用,不同的数字类型用分号隔开即可:

shell 脚本 docker exec shell 脚本 while_while循环_10

练习:写一个脚本,要求

显示一个菜单给用户

d|D) show disk usages.m|M) show memory usages.s|S) show swap usages.quit)quit

当用户给定相应选项之后,显示相应的内容,除非用户输入quit,否则不退出脚本

并且让我们给用户的提示信息看起来炫酷一点

脚本内容:

shell 脚本 docker exec shell 脚本 while_脚本_11

脚本执行结果:        

shell 脚本 docker exec shell 脚本 while_编程_12