shell 脚本循环语句

news2025/1/12 23:25:33

目录

循环

echo 命令

for 循环次数

for 第二种格式

命令举例

while

脚本举例

双重循环及跳出循环

脚本举例

更改文件和目录的后缀名的脚本

画三角形的脚本

乘法口诀表的脚本

面试例题

补充命令

let 命令


循环

—— 一定要有跳出循环的条件

  1. 已知循环的次数

  2. 未知循环的次数,但是有一个跳出的条件

echo 命令

—— echo -n 表示不换行输出

—— echo -e 表示输出转义符

转义符号作用
-n表示不换行输出
\e输出转义字符,将转义后的内容输出到屏幕上
\b转义后相当于按退格键,但前提是 b 后面存在字符;b 表示删除前一个字符,\b\b 表示删除前两个字符
\c不换行输出,当 \c 后面存在字符时,后面的字符不会被输出
\n换行,被输出的字符从 \n 除开始另起一行
\f 或 \v换行,但是换行后的新行的开头位置连接着上一行的行尾
\t转以后表示插入 tab,即横向制表符
\r光标移至行首,用后面的字符覆盖等长度的前面的字符

for 循环次数

—— for 名称 in 循环列表

do命令

done

—— 循环列表

  • 只和循环的额外次数有关

  • 有几个值,就循环几次

例
for i in a b c #for 变量名 in 循环列表
#i 为自定义,in 后面接列表循环次数,a b c 表示循环 3次
do
命令序列
done

循环列表的表项形式

[root@localhost opt]# echo {1..10}  
1 2 3 4 5 6 7 8 9 10
#将数字 1至10 全部列出
[root@localhost opt]# echo {0..10..2}
0 2 4 6 8 10
#将数字 0至10 中的偶数全部列出;从 0 开始到 10 结束,每次加 2,步长为 2
[root@localhost opt]# echo {1..10..2}
1 3 5 7 9
#将数字 0至10 中的奇数全部列出;从 0 开始到 10 结束,每次加 2,步长为 2

seq #调用命令
[root@localhost opt]# seq 5 
1
2
3
4
5
[root@localhost opt]# seq 0 5
0
1
2
3
4
5
[root@localhost opt]# seq 0 2 5
0
2
4
[root@localhost opt]# seq 1 2 5
1
3
5

for 第二种格式

for ((表达式1;表达式2;表达式3)) ; do 命令 ; done

—— 表达式1 ==> 表达式2:是一个判断,如果满足表达式2 才执行 ==> 表达式3

命令举例

[root@localhost ~]# ls
anaconda-ks.cfg       公共  视频  文档  音乐
initial-setup-ks.cfg  模板  图片  下载  桌面
[root@localhost ~]# for a in * ;do echo $a ;done
anaconda-ks.cfg
initial-setup-ks.cfg
公共
模板
视频
图片
文档
下载
音乐
桌面

计算 1累计加到100 的结果
写法一
[root@localhost ~]# sum=0;a=0;for a in {1..100};do let sum+=a ;done;echo $sum
5050

写法二
[root@localhost ~]# sum=0;a=0;for a in {1..100};do sum=$[sum+a] ;done;echo $sum
5050

while

—— 为限定条件,条件则成功执行

—— while 判断条件:条件成立则继续循环,条件不成立跳出循环

脚本举例
累加求和

#!/bin/bash
a=0
b=0
until [ $a -gt 100 ]
#当 a的值并不大于100 时,因为条件不成立,所以继续循环执行,当 a的值大于100,满足条件,则跳出循环
do
b=$[a+b]
let a++
done
echo b=$b

双重循环及跳出循环

命令注释
break跳出单个循环;break n :数字 n ,代表跳出 n 层循环
continue终止某次循环中的命令,但是不会完全终止命令;continue n :数字 n ,代表跳出 n 层循环
exit直接退出脚本
例
#!/bin/bash
for j in {1..6}
do
  if [ $j -eq 3 ]
  then
  break
  fi
  echo j=$j
done

#执行的结果
[root@localhost opt]# bash l.sh #在 j=3 的时候停止该循环命令
j=1
j=2

#!/bin/bash
for j in {1..6}
do
  if [ $j -eq 3 ]
  #当j的值等于3时
  then
  continue
  #终止此次循环,但是,不会影响循环命令的后续执行
  fi
  echo j=$j
done

#执行的结果
[root@localhost opt]# bash l.sh  #没有显示 j=3 
j=1
j=2
j=4
j=5
j=6

脚本举例

更改文件和目录的后缀名的脚本

#!/bin/bash
for a in *.txt
#给a赋值任意字符加后缀名.txt
do
b=`echo $a|cut -d "." -f1`
#给b赋值,输出a 以 . 为分隔符,取后一列
mv $a ${b}.sh
#将a 的后缀名 .txt 更改为 .sh
done
画三角形的脚本

#!/bin/bash

for a in {1..9}
do
    for b in `seq $a`
    do
    echo -e "*\c"
    done
echo
done

结果展示

乘法口诀表的脚本

#!/bin/bash
for a in {1..9}
do
      for b in `seq $a`
      do
      echo -e "${a}*${b}=$[a*b]\t\c "
      done
echo
done

结果展示

面试例题

#!/bin/bash
ip=192.168.91.
for a in {1..254}
do
{
ping -c1 -W1 ${ip}${a}  &>/dev/null
if [ $? -eq 0 ]
then
echo ${ip}${a}  >> /opt/cunhuo
else
echo ${ip}${a}  >> /opt/nocunhuo
fi
} &
done

补充命令

let 命令
符号作用
++自身变量 +1
--自身变量 -1
+=任意数值自身变量 +任意数值
-=任意数值自身变量 -任意数值
*=任意数值自身变量 *任意数值
/=任意数值自身变量 /任意数值
%=任意数值自身变量 %任意数值

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PS_魔幻

首先打开一个背景图片 然后ctrl j复制一层背景 在调整中将图片改成黑白颜色 点击调整中的 色相/饱和度 调整明度 点击画笔工具,并且设置画笔模板 调节画笔大小,将笔记本电脑涂个概况 然后再新建色相/饱和度 勾选着色 调节背景颜色至喜欢 右键混合选项 …

阿里云99元服务器ECS经济型e实例性能如何?测评来了

阿里云服务器优惠99元一年,配置为云服务器ECS经济型e实例,2核2G配置、3M固定带宽和40G ESSD Entry系统盘,CPU采用Intel Xeon Platinum架构处理器,2.5 GHz主频,3M带宽下载速度384KB/秒,上传速度1028KB/秒&am…

Bean依赖注入注解开发

value Value("xfy")private String userName;private String userName;Value("xiao")public void setUserName(String userName) {this.userName userName;} Autowired // 根据类型进行注入 如果同一类型的Bean有多个,尝试根基名字进行二次…

echarts的横向柱状图文字省略,鼠标移入显示内容 vue3

效果图 文字省略 提示 如果是在x轴上的,就在x轴上添加triggerEvent: true,如果是y轴就在y轴添加,我是在y轴上添加的 并且自定义的方法(我取名为extension) // echarts 横向省略文字 鼠标移入显示内容 export const extension…

《C++ Primer》第9章 顺序容器(一)

参考资料: 《C Primer》第5版《C Primer 习题集》第5版 C 中的容器可以分为 3 类:顺序容器、关联容器、无序关联容器。 9.1 顺序容器概述(P292) 所有顺序容器都提供了快速顺序访问的能力,但在以下方面的性能有所不…

电子学会C/C++编程等级考试2022年12月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:加一 输入一个整数x,输出这个整数加1后的值,即x+1的值。 时间限制:1000 内存限制:65536输入 一个整数x(0 ≤ x ≤ 1000)。输出 按题目要求输出一个整数。样例输入 9样例输出 10 答案: //参考答案: #include<bits/st…

全局定制序列化

作用:将返回实体类中的属性如果为null 变成"" package com.example.micrweb.config;import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.f…

OOM问题排查+Jvm优化

OOM问题排查&#xff1a; 1、top命令&#xff1a;查看cpu和内存的使用情况。 2、jstat命令&#xff1a;查看YGC和FGC情况&#xff0c;一般都是老年代不够用。导致OOM 3、jmap命令&#xff1a; 查看哪个类的实例过多,以每个类占用多少了内存。4、jstack 查看线程与线程之间的阻…

2019年12月 Scratch(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 怎样修改图章的颜色? A:只需要一个数字来设置颜色 B:设置RGB的值 C:在画笔中设置颜色、饱和度、亮度 D:在外观中设置或修改角色颜色特效 答案:D 在外观中设置或修改角色颜色特…

Impala VS Hive

Impala和Hive的关系 Impala是基于Hive的大数据实时分析查询引擎&#xff0c;直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。并且impala兼容Hive的sql解析&#xff0c;实现了Hive的SQL语义的子集&#xff0c;功能还在不断的完善中。 与Hive的…

阿里云服务器ECS经济型e实例优惠99元性能怎么样?

阿里云服务器ECS经济型e实例优惠99元性能怎么样&#xff1f;阿里云服务器优惠99元一年&#xff0c;配置为云服务器ECS经济型e实例&#xff0c;2核2G配置、3M固定带宽和40G ESSD Entry系统盘&#xff0c;CPU采用Intel Xeon Platinum架构处理器&#xff0c;2.5 GHz主频&#xff0…

学习Opencv(蝴蝶书/C++)——3. OpenCV的数据类型

文章目录 1. 总览2. 基础类型2.0 基础类型总览2.1 cv::Vec<>类2.2 cv::Matx<>类2.3 cv::Point类(cv::Point3_< >和cv::Point_< >)2.4 cv::Scalar(cv::Scalar_)类2.5 cv::Size(cv::Size_)类、cv::Rect(cv::Rect_)类和cv::RotatedRect 类2.6 基础类型…

【Docker】从零开始:6.配置镜像加速器

【Docker】从零开始&#xff1a;5.配置镜像加速器 什么是镜像加速器&#xff1f;为什么要配置docker镜像加速器?常见的Docker镜像加速器有哪些&#xff1f;如何申请Docker镜像加速器如何配置Docker镜像加速器 什么是镜像加速器&#xff1f; 镜像加速器是一个位于Docker Hub之…

Niushop 开源商城 v5.1.7:支持PC、手机、小程序和APP多端电商的源码

Niushop 系统是一款基于 ThinkPHP6 开发的电商系统&#xff0c;提供了丰富的功能和完善的商品机制。该系统支持普通商品和虚拟商品&#xff0c;并且针对虚拟商品还提供了完善的核销机制。同时&#xff0c;它也支持新时代的商业模式&#xff0c;如拼团、分销和多门店砍价等营销活…

ESP32 Arduino实战Web篇-使用 WebSocket 创建 ESP32 Web 服务器

本文将详细介绍如何使用 WebSocket 创建 ESP32 Web 服务器,解释WebSocket原理与搭建步骤,并附超详细的代码解释 假设我们需要创建一个使用 ESP32 通过 WiFi 控制灯泡的项目。实现非常简单:我们将 ESP32 设置为软 AP 或 STA 模式,使其能够提供一个网页,显示灯开关的状态为…

Go语言多线程爬虫万能模板它来了!

对于长期从事爬虫行业的技术员来说&#xff0c;通过技术手段实现抓取海量数据并且做到可视化处理&#xff0c;我在想如果能写一个万能的爬虫模板&#xff0c;后期遇到类似的工作只要套用模板就能解决大部分的问题&#xff0c;如此提高工作效率何乐而不为&#xff1f; 以下是一个…

【Web】preg_match绕过相关例题wp

目录 ①[FBCTF 2019]rceservice ②[ctfshow]web130 ③[ctfshow]web131 ④[NISACTF 2022]middlerce 简单回顾一下基础 参考文章 p牛神文 preg_match绕过总的来讲就三块可利用 数组绕过、PCRE回溯次数限制、换行符 ①[FBCTF 2019]rceservice 先贴出附件给的源码 &l…

【算法】链表-20231123

这里写目录标题 一、19. 删除链表的倒数第 N 个结点二、21. 合并两个有序链表三、24. 两两交换链表中的节点 一、19. 删除链表的倒数第 N 个结点 提示 中等 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 输入&#xff1a;head [1,…

机器学习入门(第三天)——K近邻(物以类聚)

K-nearest neighbor 知识树 怎么区分红豆绿豆&#xff1f; How to distinguish red beans and green beans? 之前我们构造了一个超平面来解决这个问题&#xff0c;既然超平面可以切分&#xff0c;是不是红豆之间和绿豆之间有着某种关联。即&#xff1a;物以类聚。 如果一个…

【Axure高保真原型】树形表格

今天和大家分享树形表格的原型模板&#xff0c;点击树的箭头可以打开或者收起子节点&#xff0c;点击表格内容&#xff0c;可以选中该行内容实现高亮变色效果&#xff0c;树形表格是通过中继器制作的&#xff0c;使用简单&#xff0c;只需要按要求填写中继器表格即可&#xff0…