首页
运维教程
Linux基础
系统服务
系统架构
数据库
shell脚本
虚拟化
大数据
DevOps
企业案例
运维开发
python
go语言
运维安全
行业资讯
网络基础
系统安全
运维面试
学习路线
学习方法
面试题库
职场解惑
常用软件
运维软件
办公软件
书籍资源
日知录
招聘信息
读书计划
智码微课
关于我们
首页 运维教程Linux基础【shell】shell脚本实战-while循环语句

【shell】shell脚本实战-while循环语句

前言

上文我们讨论了for循环的使用,在有限循环里,我们使用for循环是很方便的一件事情,今天我们来探讨下while循环

while循环语句的语法分析

在这里插入图片描述

语法格式一:
while [条件]
do
    操作
done

语法格式二:
while read line
do
    操作
done  <  file

通过read命令每次读取一行文件,文件内容有多少行,while循环多少次

注意:只有表达式为真,do和done之间的语句才会执行,表达式为假时,结束循环(即条件成立就一直执行循环)

例如:

while true ;do
    echo 'helloword'
done

while 的使用案例

1. 循环输出1-10的数字
#!/bin/bash

num=1

while [ num -le 10 ]
do
    echonum
    num=((num + 1 ))
done

2. 使用while读文件并打印文件内容

用法一:

while read line
do
    echo $line
done <./a.txt

用法二:

cat ./a.txt|
while read line
do
    echo $line 
done

for实现的读取文件并着行打印

#!/bin/bash

content=(cat ./a.txt)
for i incontent
do
   echo $i
done

3. 输出两数相乘的效果(如下图)

此处感谢 @一只小小白丶 的建议,因为大多数人看到等号就会想到两边相等,这符合我们的教育习惯。
在这里插入图片描述
如果要实现图中效果可以按照如下方式做:

#!/bin/bash
num=1
while [ num -lt 10 ]
do
    sum=(( num *num))
    echo "num *num = $num"
    ((num++))

done

当然大多数人习惯了让等式两边必须相等,不相等看上去别扭,这也是义务教育的结果,也可以稍微改一下:

#!/bin/bash
num=1
while [ num -lt 10 ]
do
    sum=(( num *num))
    echo "num *num = $sum"
    ((num++))

done

这样输出的结果符合大多数人的数学习惯:
在这里插入图片描述

创建指定文件里的用户

指定文件 name.txt 里面包含 zhangsan lisi wangwu

name.txt 如下:

[root@ecs-c13b ~]# cat name.txt 
zhangsan
lisi
wangwu

从name.txt里面遍历用户名并创建用户

#!/bin/bash
for name in `cat /root/name.txt`
#for name in (cat /root/a.txt)
do
        idname &> /dev/null
        if [ ? -ne 0 ];then
                useraddname
                echo "123456" |passwd --stdin name &> /dev/null
                echo "username created"

        else
                echo "user $name is exist"
        fi
done


总结

到目前为止,for-while-if-case,这四个常用的控制语句我们都已经探讨过了,接下来就是大量练习和综合应用的时候,操练起来把。

本文链接:http://www.geekyunwei.com/2052.html

网友评论comments

发表评论

邮箱地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2021 极客运维 备案号: 京ICP备2021004281号
扫二维码
扫二维码
返回顶部