shell脚本实战-while循环语句

2023-11-03

前言

上文我们讨论了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,这四个常用的控制语句我们都已经探讨过了,接下来就是大量练习和综合应用的时候,操练起来把。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell脚本实战-while循环语句 的相关文章

随机推荐

  • jQuery03(筛选&文档处理&CSS位置)

    目录 一 筛选 过滤 在jQuery对象数组中 过滤出一部分元素来 案例1 演示过滤所有的方法 查找 在jQuery对象数组中 根据选择器查找孩子 父母 兄弟标签 案例2 演示查找所有的方法 二 文档处理 一 增 1 1 内部插入 1 2
  • (2021,多原型网络)少样本3D点云语义分割

    Few shot 3D Point Cloud Semantic Segmentation 公众号 EDPJ 目录 0 摘要 0 1 关键词和名词解释 1 简介 2 相关工作 3 方法论 3 1 问题定义 3 2 基于attention的多
  • “智能合约”是如何部署的?

    我们都知道 智能合约是区块链网络中各个节点共同遵守的合约 或者说是合同 那么智能合约是如何部署和发挥功能的呢 个人技术公众号 解决方案工程师 欢迎同领域的朋友关注 相互交流 智能合约是Nick Szabo在1994年所提出的概念 是一种计算
  • 边缘计算浅析

    最近 新基建 是个热词 那么新基建到底是什么 与之紧密相关的5G何去何从 这给边缘计算带来了什么机遇 边缘计算的生态产业链条是怎样的 它的典型特征和经济效益是什么 本文将为大家带来分享 新基建是什么 近日 国家发改委官方首次明确了 新基建
  • 5G 的三大应用场景——ITU-R原文

    每次写 5G 的材料时都会提及 5G 的三大应用场景 虽然这是一个众人皆知的常识 但是如果不引用一下的话有些不严谨 苦于一直没找到 ITU 的原文 之前引用的都是移动通信教材那本书 今天狠下心来花时间找了原文 功夫不负有心人 可算给我找到了
  • 找出数组中第 k 小的数

    题目 给定整型数组 S 和整数 k S的长度为n 1 lt k lt n 请输出数组中第 k 小的数 输入的第一行为数组 S 的各个元素 输入的第二行为整数 k 测试案例 1 输入 3 1 2 5 4 6 3 输出 3 我相信大家的第一想法
  • 工程师如何对待开源

    工程师如何对待开源 本文是笔者作为一个在知名科技企业内从事开源相关工作超过 20 年的工程师 亲身经历或者亲眼目睹很多工程师对待开源软件的优秀实践 也看到了很多 Bad Cases 所以想把自己的一些心得体会写在这里 供工程师进行参考 希望
  • mongodb学习笔记–C++操作mongodb

    mongodb学习笔记 C 操作mongodb 在学习mongodb过程当中 必须学习的就是用C Java PHP C 等 操作mongodb 这里讲述C 操作mongodb 在官方提供的mongo cxx driver驱动中有相关的操作例
  • Golang手动安装包

    在写代码过程中经常需要import github com 官方推荐的为go get github com 下载后可以直接自动安装 但是国内由于墙的原因导致下载失败 在此介绍如何在Linux环境下手动安装go包 以 github com ma
  • [网络工程师]-网络规划与设计-需求分析

    1 建网目标分析 建网目标的分析内容包括最终目标分析和近期目标分析 1 1最终目标分析 最终目标分析内容包括 网络建设到怎样的规模 如何满足用户需求 采用的是否是TCP IP 体系结构是Intranet还是非Intranet 即是否为企业网
  • Oracle19c ORA-00904: “WMSYS“.“WM_CONCAT“: 标识符无效

    错误描述 oracle19c ORA 24344 成功 但出现编译错误 ORA 00904 WMSYS WM CONCAT 标识符无效 解决办法 设置实例 export ORACLE SID test1 首先使用dba账号登录oracle数
  • Java06-MyBatis如何实现多表查询(一对一、一对多)

    前提 总结这个文章的前提是要会基本的SQL语句 我用的MySQL 和JDBC的基本实现 在这个基础上 我们可以通过一些标签或者注解去实现对数据库的多表联查基于一对一和一对多的关系 第二点 我们在制作数据库时一定要考虑不同的表之间的关系 这种
  • openstack装配置 Neutron( 控制节点

    在控制节点 controller 安装 Neutron 服务 同时配置支持 vxlan 1 登录数据库创建 neutron 数据库 MariaDB none gt CREATE DATABASE neutron default charac
  • 【大数据】美团 DB 数据同步到数据仓库的架构与实践

    美团 DB 数据同步到数据仓库的架构与实践 1 背景 2 整体架构 3 Binlog 实时采集 4 离线还原 MySQL 数据 5 Kafka2Hive 6 对 Camus 的二次开发 7 Checkdone 的检测逻辑 8 Merge 9
  • linux下应用开发之按键信号结束线程

    linux应用层经常使用线程 在线程中while循环等待 或者应用中也会有while 那么如果自己写demo或者使用命令行运行 经常用到使用Ctrl C键结束应用 比如main函数中加入signal信号处理 Stop就是信号处理回调函数 主
  • FSA-Net 模型运行——代码调试

    文章目录 一 代码连接 一 代码调试 一 环境配置 二 运行环境 二 参数设置 一 模型训练 二 模型测试 三 demo运行 三 报错汇总 一 代码连接 提示 跑了三天终于把代码跑通了 谢谢各路神仙菩萨 可以先看主要参考博客里大神的博客 讲
  • D3dcompiler_43.dll缺失怎么修复?快速修复方法分享

    D3dcompiler 43 dll缺失怎么修复 在使用Windows系统的过程中 您可能会遇到 D3dcompiler 43 dll缺失 的问题 这个问题通常会导致应用程序无法正常运行 因为它是Direct3D编译器的一部分 而Direc
  • 2020-08-13

    AlertDialog You need to use a Theme AppCompat theme or descendant with this activity 解决方案 将 super context 修改为 super cont
  • kingsoft的服务器信息,Win10系统kingsoft是什么文件夹?可以删除吗?

    在使用Win10系统的过程中 有很多人在盘符里面发现了一个kingsoft文件夹 于是就想问Win10系统kingsoft是什么文件夹 可以删除吗 其实这个问题很简单 但是如果你不知道的话 那就赶紧看看小编整理的以下文章内容吧 Win10系
  • shell脚本实战-while循环语句

    前言 上文我们讨论了for循环的使用 在有限循环里 我们使用for循环是很方便的一件事情 今天我们来探讨下while循环 while循环语句的语法分析 语法格式一 while 条件 do 操作 done 语法格式二 while read l