shell脚本之循环语句(for、while、untli)

循环语句:

一定要有跳出循环条件

循环条件:

1.已知循环的次数(新来十个人,就要新建十个账号

2.未知循环的次数,但是要有跳出循环条件(对象生气,要道歉到原谅为止)

for(已知次数)

限定执行: while条件成功执行 ,until条件不成功执行

for

语法1:for i(变量名) in 循环列表;do 命令序列;done

循环列表:只和你循环的额次数有关

循环列表有6个值循环6次

循环列表的表现形式:

{1..10}

{1..100}

{0..100..2} :从0开始到100结束,每次加2(步长为2),打印的都是偶数。

{1..100..2}: 从1开始到100结束,每次加2(步长为2),打印的都是奇数。

面试题:

将某文件夹下的所有.txt结尾的文件后缀改为.bak

#!/bin/bash
for i in *.txt
do
pre=`echo $i|cut -d"." -f1`提取"."为分隔符的第一列
mv $i  ${pre}.bak
done

将1到100相加

#!/bin/bash
sum=0
i=0
for i in {1..100};
do
sum=$[sum+i];
done

检测一整个网段的主机是否存活

192.168.116.0
将存活的主机放在同一个文件中
将不存活的主机放在另一个文件中


#!/bin/bash
ip=192.168.116.
for i in {1..254}
do
{
ping -c1 -w1 [ ${ip}${i} ] &>/dev/null
if [ $? -eq 0 ]
then
echo ${ip}${i}  >> /data/hoston(存活)
else
echo ${ip}${i} >> /data/hostoff(不存活)
fi
}&
done

直角三角形

99乘法表

语法2:for

((表达式1;表达式2;表达式3))

表达式1:定义变量并赋值

表达式2:决定是否循环

表达式3:决定循环变量如何改变,决定循环什么时候退出

设置1+1一直+到100得出结果

#!/bin/bash
sum=0
i=0
for((i=0;i<100;i++))#取一个初始值i=0;如果i小于100;在i的值上加一,再回到表达式1继续执行,直到表达式2不满足跳出循环。
do
let sum+=i 
done
echo $sum

while

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

while   判断条件(条件成立)继续循环;(条件不成立)跳出循环

do

命令序列

done

判断条件

((i=0;1<=100;i++))

死循环命令:一直执行

1.while true

2.while :

示例

批量添加用户

  • 用户名称以stu开头,按数字顺序进行编号
  • 一共添加20个用户,即stu1、 stu2、…、stu20
  • 初始密码均设为123456

面试题

1到100相加

#!/bin/bash
i=0
sum=0
while [ $i ''-le 100 ]
do
sum=$[sum+i]
let i++
done
echo $sum

猜随机数

until

until 循环与 while 循环类似,while 循环能实现的脚本 until 同样也可以实现,但区别是while 循环在条件为真时继续执行循环,而 until 则是在条件为假时执行循环

语法:

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

每5秒给用户发消息

#!/bin/bash
if [ $# -eq 0 ]
then
echo "请在脚本后输入 用户名和要发送的消息"
fi
​
until  w |grep $1 -q
do
echo "用户不在线"
sleep 5
done
​
echo $2|write $1
​

双重循环及跳出循环

break跳出单个循环 break n 数字数字是几代表跳出n层循环

continue终止某次循环中的命令,但是不会完全终止命令

exit 直接退出脚本

break(到5终止)

continue(到5跳过)

exit(到5全部停止,不循环)

面试题:筛选出主机名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/207628.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maven打包可执行jar含依赖lib

修改pom.xml <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- jdk8可用&#xff0c;其他jdk版本可能需改插件版本 --><version>2.3.7.RE…

CSS伪类选择器详细讲解

前言 伪类选择器在CSS中起到的作用可以说是至关重要的&#xff0c;如果CSS没有伪类选择器&#xff0c;有很多效果都要借助js来完成&#xff0c;这样不仅代码量增加&#xff0c;维护起来你难度也大。这样程序员的工作量大&#xff0c;也违背了CSS诞生的作用&#xff0c;就是提高…

JSP:Javabean

起初&#xff0c;JavaBean的目的是为了将可以重复使用的代码进行打包&#xff0c;在传统的应用中&#xff0c;JavaBean主要用于实现一些可视化界面&#xff0c;如一个窗体、按钮、文本框等&#xff0c;这样的JavaBean称之可视化的JavaBean。 随着技术的不断发展与项目的需求&am…

CentOS8安装MySQL

选择MySQL数据库的原因&#xff1a; 1、运行速度快&#xff1b; 2、开源免费&#xff1b; 3、易学易用&#xff1b; 4、可移植性&#xff0c;能够在众多不同的系统上工作&#xff1b; 5、丰富的接口&#xff0c;提供了用于C、C等语言的API&#xff1b; 6、支持查询语言&#xf…

设计循环队列(详解)

呀哈喽&#xff0c;我是结衣 今天给大家带来的内容如标题所述&#xff0c;我们来设计环形队列&#xff0c;虽然队列没有讲&#xff0c;但是我就是想讲啊。那么环形队列现在开始。 队列的属性 在设计环形队列前&#xff0c;我们先要了解队列的特点&#xff08;先进先出&#x…

C语言回文数(1106:回文数(函数专题))

题目描述 一个正整数&#xff0c;如果从左向 右读&#xff08;称之为正序数&#xff09;和从右向左读&#xff08;称之为倒序数&#xff09;是一样的&#xff0c;这样的数就叫回文数。输入两个整数m和n&#xff08;m<n)&#xff0c;输出区间[m&#xff0c;n]之间的回文数。 …

年底了,我劝大家真别轻易离职...

年底了&#xff0c;一些不满现状&#xff0c;被外界的“高薪”“好福利”吸引的人&#xff0c;一般就在这时候毅然决然地跳槽了。 在此展示一套学习笔记 / 面试手册&#xff0c;年后跳槽的朋友可以好好刷一刷&#xff0c;还是挺有必要的&#xff0c;它几乎涵盖了所有的软件测试…

vue history路径编码

记录今天遇到的一个问题&#xff1a; 问题现状 有一个需要前端伪造302进行重定向的需求&#xff0c;我们需要将这样的一个路径&#xff1a;http://xxx.com/system-name/#/index&#xff0c;拼接在跳转地址的后面&#xff0c;进行重定向。拼接的方式是这样的&#xff1a; htt…

Linux文件

目录 一、基本概念 二、研究进程和被打开文件的关系 &#xff08;一&#xff09;w方式 &#xff08;二&#xff09;a方式 三、认识系统接口&#xff0c;操作文件 &#xff08;一&#xff09;认识文件描述符 &#xff08;二&#xff09;举例 &#xff08;三&#xff09;…

3分钟使用 WebSocket 搭建属于自己的聊天室(WebSocket 原理、应用解析)

文章目录 WebSocket 的由来WebSocket 是什么WebSocket 优缺点优点缺点 WebSocket 适用场景主流浏览器对 WebSocket 的兼容性WebSocket 通信过程以及原理建立连接具体过程示例Sec-WebSocket-KeySec-WebSocket-Extensions 数据通信数据帧帧头&#xff08;Frame Header&#xff09…

配置静态 Eth-trunk

1、需求 1&#xff09;交换网络中存在2个 VLAN – 10 和 20 2&#xff09;每个VLAN的IP地址为&#xff1a;192.168.xx.0/24&#xff08;xx为 vlan 号&#xff09; 3&#xff09;对交换机之间的链路进行链路捆绑&#xff0c;增加互联带宽 4&#xff09;确保同 VLAN的 PC 之间互…

clang+llvm多进程gdb调试

clangllvm多进程gdb调试 前言1. 命令行gdb2. 父进程调试3. 子进程调试4. 返回父进程 前言 在学习新增llvm的优化pass时&#xff0c;需要跟踪clang及llvm的调用栈。然而llvm通过posix_spawn()创建了新进程&#xff0c;这使得gdb调试必须有一定的技巧了。 1. 命令行gdb 以下命…