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

【shell】shell脚本实战-while循环语句前言上文我们讨论了for循环的使用,在有限循环里,我们使用for循环是很方便的一件事情,今天我们来探讨下while循环while循环语句的语法分析语法格式一:while[条件]do 操作done语法格式二:whilereadlinedo 操作done<file通过read命令每次读取一行文件,文件内容有多少行,while循环多少次注意:只有表达式为真,do和done之间的语句才会执行,表达式为假时,结束循环(即条件成立就一直执行循环)例如:whil

大家好,又见面了,我是你们的朋友全栈君。

前言

上文我们讨论了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
	echo $num
	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 in $content
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
        id $name &> /dev/null
        if [ $? -ne 0 ];then
                useradd $name
                echo "123456" |passwd --stdin $name &> /dev/null
                echo "user $name created"

        else
                echo "user $name is exist"
        fi
done


总结

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163959.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月24日 上午8:46
下一篇 2022年7月24日 上午8:46


相关推荐

  • 硬件监控-服务器

    硬件监控-服务器2019 独角兽企业重金招聘 Python 工程师标准 gt gt gt

    2026年3月16日
    1
  • 零基础搞定 Trae 智能体配置 + sequential-thinking MCP 集成!

    零基础搞定 Trae 智能体配置 + sequential-thinking MCP 集成!

    2026年3月15日
    2
  • js面试题 高频 含答案

    js面试题 高频 含答案1 讲一下 var let const 的区别 var 声明的变量有变量提升的特性 而 let const 没有 var 声明的变量会挂载到 windows 对象上 所以使用 var 声明的是全局变量 而 let 和 const 声明的变量是局部变量 块级作用域外不能访问同一作用域下 let 和 const 不能重复声明同名变量 而 var 可以 const 声明的是常量 必须赋初值 一旦声明不能再次赋值修改 如果声明的是复合类型数据 可以修改其属性 2 js 中的基础数据类型有哪

    2026年3月27日
    2
  • 责任链模式(职责链模式)详解

    责任链模式(职责链模式)详解在现实生活中 常常会出现这样的事例 一个请求有多个对象可以处理 但每个对象的处理条件或权限不同 例如 公司员工请假 可批假的领导有部门负责人 副总经理 总经理等 但每个领导能批准的天数不同 员工必须根据自己要请假的天数去找不同的领导签名 也就是说员工必须记住每个领导的姓名 电话和地址等信息 这增加了难度 这样的例子还有很多 如找领导出差报销 生活中的 击鼓传花 游戏等 在计算机软硬件中也有相关例子

    2026年3月17日
    2
  • net开源开发web框架_我的6大Web开发开源框架

    net开源开发web框架_我的6大Web开发开源框架net开源开发web框架有许多后端框架是开源的,并且易于使用,但是并非所有框架都提供了出色的功能。后端框架是网站开发的重要组成部分,因为它们就像网站的基本要素。基本上,他们处理网站幕后的一切。后端框架具有广泛的库,API,Web服务器等。他们负责数据库,确保数据库与前端进行正确的通信并生成后端功能。如所承诺的,接下来是我的前6个后端框架的摘要。1.RubyonRa…

    2022年7月15日
    36
  • pycharm的配置环境

    pycharm的配置环境1 点开你的 pycharm 创建一个 python 文件 2 对文件进行命名 然后点击上面的 File 下的 settings3 进入设置后再点击 project 下的 interpreter4 点开 interpreter 会出现什么都没有的情况 我的是配置好的请忽略 点击上面类似齿轮的图标 5 你就会进入下个设置里面 会出现两栏 点击下面的 Exstingenvir 再点击后面的那个省略号 6 找到你下载 python 解释器的位置 找到 python exe 并点击 最后点击 OK 就可以了

    2026年3月27日
    2

发表回复

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

关注全栈程序员社区公众号