shell编程-循环语句(for,while,until)

1,527 阅读2分钟

前言

Shell编程 中循环命令用于特定条件下决定某些语句重复执行的控制方式,有三种常用的 循环语句 :for、while和until。

for循环语句

Snipaste_2022-08-29_19-58-49.png 格式

for 变量名 in 取值列表
do
命令序列
done

用for循环打印1到10 Snipaste_2022-08-29_20-05-05.png Snipaste_2022-08-29_20-05-30.png 用for循环打印1到10之间的偶数

Snipaste_2022-08-29_20-21-21.png 用for循环打印1到10之间的奇数

Snipaste_2022-08-29_20-22-02.png

for循环应用实例

实例一:求从1加到10的和

Snipaste_2022-08-29_20-35-09.png Snipaste_2022-08-29_20-34-49.png 实例二:生成8位随机密码
截取字符串 Snipaste_2022-08-29_21-03-11.png 生成随机数 Snipaste_2022-08-29_21-08-10.png

Snipaste_2022-08-29_20-57-14.png Snipaste_2022-08-29_20-57-02.png 实例三:使用循环语句将一个 0到255 之间的十进制数转换成二进制数
方法一:除法取余数 Snipaste_2022-08-29_21-21-03.png Snipaste_2022-08-29_21-20-49.png

方法二:减法 Snipaste_2022-08-29_21-32-13.png Snipaste_2022-08-29_21-32-01.png

实例四:求从1到100所有整数的偶数和、奇数和

Snipaste_2022-08-29_21-38-25.png Snipaste_2022-08-29_21-38-13.png

多线程执行脚本

普通for循环是串行,一个一个执行。在do和done中间增加 { } 符号,可以多线程同时执行

实例:ping 192.168.142.{1..20}内的所有主机

Snipaste_2022-08-29_22-08-27.png Snipaste_2022-08-29_22-00-58.png

for默认分隔符

环境变量$IFS,是指内部字段分隔符, 默认为三个:空格、制表符 \t、换行符 \n Snipaste_2022-08-29_22-11-53.png 起因: Snipaste_2022-08-29_22-21-42.png Snipaste_2022-08-29_22-20-42.png

解决方法:

Snipaste_2022-08-29_22-28-01.png Snipaste_2022-08-29_22-27-46.png

while循环语句

重复测试某个条件,只要条件成立则反复执行. Snipaste_2022-08-29_19-59-33.png

格式

while 条件测试操作
do
命令序列
done

示例 Snipaste_2022-08-29_22-32-41.png

实例一:
猜大小游戏 Snipaste_2022-08-31_19-22-59.png

Snipaste_2022-08-31_19-14-39.png 实例二:
批量添加用户 Snipaste_2022-08-31_19-28-46.png Snipaste_2022-08-31_19-28-03.png

实例三:
用户输入密码,错误3次提醒用户。

Snipaste_2022-08-31_19-43-04.png

Snipaste_2022-08-31_19-42-42.png

until循环语句

重复测试某个条件,只要条件不成立则反复执行. Snipaste_2022-08-29_19-59-55.png

格式

until 条件测试操作
do
命令序列
done

示例 Snipaste_2022-08-29_22-38-35.png

实例一:
求小于用户输入值总和

Snipaste_2022-08-31_19-51-12.png Snipaste_2022-08-31_19-50-55.png

实例二:
为指定用户发送在线消息;若用户不在线,则每3分钟试一次,直至用户登录系统后再发送消息.

Snipaste_2022-08-31_20-10-45.png Snipaste_2022-08-31_20-07-57.png Snipaste_2022-08-31_20-07-05.png