Shell编程循环语句基础

125 阅读2分钟

for循环语句

读取不同的变量值,用来逐个执行同一组命令。

#方式一,遍历
for 变量名 in 取值列表
#注:取值列表默认的分隔符是空格,换行,制表符(tab)
do
    命令序列
done
#方式二,迭代
for((变量=初始值;变量的取值范围;变量的迭代方式))
#例:for((i=1;i<=3;i++))
do
    命令序列
done

image.png

  • 遍历输出连续的一列数字 image.png
    • 用{ .. }来表示取值范围 image.png
    • 也可用seq获取取值范围 image.png
  • 一个隔一个数输出 image.png image.png

实操一:批量添加用户

  • 用户名存放在users.txt文件中,每行一个
  • 初始密码均设为123456 image.png

运行结果
image.png image.png

实例二:检测指定范围主机是否通信

  • 将通信的主机ip输出到文件host_ip中 image.png

运行结果 image.png

补充:多线程运行

指实现多个线程并发执行。
在shell脚本中添加{ }&即可实现多线程的效果。
{....}&代表的是将每个循环操作的进程放到后台执行,且后台进程不区分前后顺序
wait命令:用于等待上面所有后台程序都执行完毕后再执行后面的shell语句。 image.png

while循环语句

重复测试某个条件,只要条件成立则反复执行。

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

image.png

  • 输出连续的一列数字 image.png

实操一:批量添加用户

  • 用户名称以stu开头,按数字顺序进行编号
  • 一共添加10个用户,即stu1、stu2...
  • 初始密码均设为123123 image.png

运行结果 image.png image.png

实操二:猜价格游戏

  • 通过变量RANDOM获得随机数
  • 提示用户猜测并记录次数,猜中后退出循环 image.png

运行结果 image.png

补充

RANDOM随机数,范围0~32767 image.png

缩小随机数范围,可通过取余获得。 image.png

until循环语句

重复测试某个条件,只要条件不成立就反复执行

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

image.png

  • 输出一列连续的数字 image.png

实操一:监测系统的登录人数

  • until循环检测登录人数
  • 若大于3人,每3秒弹出信息提示 image.png image.png

实操二:通过循环累加

  • 通过循环累加1~50的和值 image.png image.png