linux 循环显示所有的sh.*文件.,linuxSHELL学习之循环嵌套、break、continue

2023-11-04

一、循环嵌套1、在for循环中嵌套另一个for循环

[root@t1 ~]# cat t36.sh

#!/bin/bash

for (( i=1; i<=3; i++ ))

do

echo "out loop $i"

for (( j=1; j<=2; j++ ))

do

echo "inside loop $j"

done

done

[root@t1 ~]# ./t36.sh

out loop 1

inside loop 1

inside loop 2

out loop 2

inside loop 1

inside loop 2

out loop 3

inside loop 1

inside loop 2

2、将for循环放在while内

[root@t1 ~]# cat t37.sh

#!/bin/bash

var1=3

while [ $var1 -gt 0 ]

do

echo "out loop $var1"

var1=$[ $var1-1 ]

for (( i=3; i>0; i--))

do

echo "inside loop $i"

done

done

[root@t1 ~]# ./t37.sh

out loop 3

inside loop 3

inside loop 2

inside loop 1

out loop 2

inside loop 3

inside loop 2

inside loop 1

out loop 1

inside loop 3

inside loop 2

inside loop 1

3、until与while结合

[root@t1 ~]# cat t38.sh

#!/bin/bash

var1=4

until [ $var1 -eq 2 ]

do

echo "out until loop $var1"

var1=$[ $var1 -1 ]

var2=3

while [ $var2 -lt 5 ]

do

echo "inside loop $var2"

var2=$[ $var2 + 1 ]

done

done

[root@t1 ~]# ./t38.sh

out until loop 4

inside loop 3

inside loop 4

out until loop 3

inside loop 3

inside loop 4

二、文件数据的循环

有时需要迭代存储在文件内部的项,这需要两种技术的结合

*使用循环嵌套

*更改环境边玲IFS

[root@t1 ~]# cat t39.sh

#!/bin/bash

#changing the IFS value

IFSOLD=$IFS

IFS=$'\n'

for entry in `cat /etc/passwd`

do

echo "values in $entry -"

IFS=:

for value in $entry

do

echo "$value"

done

done

[root@t1 ~]# ./t39.sh

values in root:x:0:0:root:/root:/bin/bash -

root

x

0

0

root

/root

/bin/bash

values in bin:x:1:1:bin:/bin:/sbin/nologin -

bin

x

1

1

bin

/bin

/sbin/nologin

三、循环控制

有两条命令可以终止循环迭代:break、continue

1、使用break命令跳出循环

1、1跳出单循环

[root@t1 ~]# cat t41.sh ---跳出单循环

#!/bin/bash

#breaking out of a for loop

for var1 in 1 2 3 4 5 6 7 8 9 10

do

if [ $var1 -eq 5 ]

then

break

fi

echo "Iteration number:$var1"

done

echo "the for loop is completed"

[root@t1 ~]# ./t41.sh

Iteration number:1

Iteration number:2

Iteration number:3

Iteration number:4

the for loop is completed

[root@t1 ~]# cat t42.sh ---break out while loop

#!/bin/bash

#breaking out a while loop

var1=10

while [ $var1 -gt 1 ]

do

if [ $var1 -eq 5 ]

then

break

fi

echo "eteration : $var1"

var1=$[ $var1 - 1 ]

done

echo "the while loop is completed"

[root@t1 ~]# ./t42.sh

eteration : 10

eteration : 9

eteration : 8

eteration : 7

eteration : 6

the while loop is completed

1、2跳出内循环

[root@t1 ~]# cat t43.sh

#!/bin/bash

#break out inner loop

for (( a=1; a<5; a++ ))

do

echo "Outer loop:$a"

for (( b=1; b<5; b++ ))

do

if [ $b -eq 3 ]

then

break

fi

echo "inner loop:$b"

done

done

[root@t1 ~]# ./t43.sh

Outer loop:1

inner loop:1

inner loop:2

Outer loop:2

inner loop:1

inner loop:2

Outer loop:3

inner loop:1

inner loop:2

Outer loop:4

inner loop:1

inner loop:2

1、3跳出外循环

#!/bin/bash

for (( i=10; i>0; i-- ))

do

echo "outer loop:$i"

for (( j=10; j>0; j-- ))

do

if [ $j -eq 8 ]

then

break 2

fi

echo "inner loop:$j"

done

done

[root@t1 ~]# ./t45.sh

outer loop:10

inner loop:10

inner loop:9

2、continue命令

continue命令是一种提前停止循环内命令,而不完全终止循环的方法。这就允许在循环中设置shell不执行命令的条件。[root@t1 ~]# cat t46.sh

#!/bin/bash

#using continue

for (( i=1; i<10; i++ ))

do

if [ $i -gt 3 ] && [ $i -lt 8 ]

then

continue

fi

echo "the number is:$i"

done

[root@t1 ~]# ./t46.sh

the number is:1

the number is:2

the number is:3

the number is:8

the number is:9

使用continue命令停止外循环

[root@t1 ~]# cat t49.sh

#!/bin/bash

#continuing an outer loop

for (( a=1; a<=5; a++ ))

do

echo "iteration $a:"

for (( b=1; b<3; b++ ))

do

if [ $a -gt 2 ] && [ $a -lt 4 ]

then

continue 2

fi

var3=$[ $a * $b ]

echo "the result of $a * $b is $var3"

done

done

[root@t1 ~]# ./t49.sh

iteration 1:

the result of 1 * 1 is 1

the result of 1 * 2 is 2

iteration 2:

the result of 2 * 1 is 2

the result of 2 * 2 is 4

iteration 3:

iteration 4:

the result of 4 * 1 is 4

the result of 4 * 2 is 8

iteration 5:

the result of 5 * 1 is 5

the result of 5 * 2 is 10

四、处理循环的输出

[root@t1 ~]# cat t50.sh

#!/bin/bash

for file in /root/*

do

if [ -d $file ]

then

echo "$file is a directory"

else

echo "$file is a file"

fi

done > output.txt  ---将结果重定向到output.txt文件,不输出到屏幕

[root@t1 ~]# more output.txt

/root/5 is a file

/root/anaconda-ks.cfg is a file

/root/Desktop is a directory

/root/install.log is a file

/root/install.log.syslog is a file

/root/l is a file

/root/output.txt is a file

/root/readline-5.0 is a directory

/root/rlwrap-0.37 is a directory

/root/states is a file

/root/t13.sh is a file

/root/t14.sh is a file

/root/t15.sh is a file

/root/t16.sh is a file

/root/t17.sh is a file

/root/t18.sh is a file

[root@t1 ~]# cat t51.sh  ---对输出的结果进行了排序处理

#!/bin/bash

#piping a loop to another command

for state in "North Dakota" Connecticut Illinois Tennessee

do

echo "$state is the next place to go"

done|sort

echo "this completes our travels"

[root@t1 ~]# ./t51.sh

Connecticut is the next place to go

Illinois is the next place to go

North Dakota is the next place to go

Tennessee is the next place to go

this completes our travels

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

linux 循环显示所有的sh.*文件.,linuxSHELL学习之循环嵌套、break、continue 的相关文章

  • React实现拖拽效果

    最近遇到一个拖拽的业务 那么我们需要了解一下拖拽的流程 让我们来实现这个组件吧 一 拖拽流程 编写项目之前我们先了解一下拖拽大致的流程 以及触发的事件 其实拖拽一共分为三个步骤 1 onmousedown 拖拽事件的最开始 在这个简单我们要
  • 发现一个xdotool,是个神器

    xdotool是linux下 类似 按键精灵 的工具 在一些自动测试时 经常用到 以上为xdotool正常使用 比如说 模拟击键a xdotool key a 模拟两个键alt tab xdotool key alt Tab 自动输入wor
  • SeaTunnel本地运行以及kafka发送到redis说明

    下载 Seatunnel2 3 1源码 Idea中的目录结构 编译 通过maven进行代码编译 编译命令 mvn clean package pl seatunnel dist am Dmaven test skip true 编译单个模块
  • 【恶意代码与软件安全分析】(三)dynamic analysis

    恶意代码与软件安全分析 三 virtualbox崩掉了 只能跳过第二章先做第三章了 动态分析 在一个安全的环境下运行恶意软件并观察其行为 分析后输出内容 process Service Behavior 进程创建 进程终止 进程数 netw
  • Vue再学习2_组件开发

    Vue再学习2 组件开发 全局组件 在main js中配置 配置完成之后可以全局使用 1 引入组件对象 import GlobalTitle from components GlobalTitle vue 2 声明全局组件 Vue comp
  • cmd 执行html文件,cmd执行bat文件 cmd文件和bat文件有什么区别?

    cmd怎么执行dos下的bat文件在文件目录直接输入bt4 bat就可以了 记住要输入完整的文件名 包换后缀名 比如 11 bat在D盘根目录 在D gt 后面直接输入11 bat 回车 cmd下执行bat文件的命令 在cmd下执行bat文
  • idea 将springboot项目的Application加入service标签里

    idea 将springboot项目的Application启动器加入service标签里 最终效果图如下 第一步 最开始底部显示没有service服务 添加service 第三步 完成以上操作后底部会这样显示 然后点击 第四步 选择Mav
  • SQL Server [使用SSMS来分离数据库] 奋斗的珂珂~

    分离数据库 分离数据库就是将某个数据库 如student Mis 从SQL Server数据库列表中删除 使其不再被SQL Server管理和使用 但该数据库的文件 MDF 和对应的日志文件 LDF 完好无损 分离成功后 我们就可以把该数据
  • Android中的ConstraintLayout约束布局

    ConstraintLayout约束布局 ConstraintLayout有啥好处呢 可以减少布局层次 特别适合复杂的大型布局 可谓是集线性布局和相对布局于一身的荣誉布局 使用 添加依赖 目前 AndroidStudio新的版本默认就给你上
  • MMdetection3D学习系列(二)——KITTI数据集训练测试及可视化

    安装完环境以后 就可以进行测试了 这里我使用的是KITTI数据集进行测试 关于KITTI数据集 网上有很多介绍了 这里简单说一下在mmdet3d中它需要的文件层级样式吧 主要是针对RGB和点云数据进行检测 一般来说采用其中一侧的彩色摄像头的
  • centos7重启或关机卡死

    这个问题其实是systemd219这个版本的问题 查看systemd版本 请使用systemctl version 由于systemd进程的判断比之前更加严格 如果某些进程不响应SIGTERM信号 可能会导致重启是挂死 该问题和业务进程对S
  • Ubuntu查看安装的软件、.开头的文件

    1 dpkg l grep 比如 dpkg l grep libjansson4 2 show hidden files那里
  • Spring整合mybatis和Junit单元测试

    1 Spring整合mybatis 前提了解 spring 管理 mybatis mybatis 管理 mapper 要依赖于德鲁伊连接池 spring 管理sqlsessionfactory 思路 Spring整合Mybatis主要做两件
  • Vue极简使用2

    Vue极简使用 Vue基础内容 模板语法 解析文本 解析原始HTML 动态属性 模板语法使用限制 条件渲染 列表渲染 事件处理 列表渲染 事件处理 修饰符 表单输入绑定 计算属性 样式处理 表单输入和绑定 修饰符 计算属性和监听器 计算属性
  • 差分详细讲解(C++)

    每日一句 平凡的我在人多的地方曾极力小心翼翼 但不知从何时起 我不太在意别人的目光了 比起被人觉得是个怪人 我现在更害怕浪费时间 差分 一 一维差分 二 二维差分 一 一维差分 差分就是前缀和的逆运算 如果你不懂什么是前缀和 看这里 gt
  • Ubuntu20.04下解决Qt出现qt.qpa.plugin:Could not load the Qt platform plugin “xcb“ 问题

    问题描述 python调用matplotlib pyplot库进行图形绘制时弹出错误提示 qt qpa plugin Could not load the Qt platform plugin xcb in even though it w
  • (个人)AR电子书系统创新实训第五周(1)

    服务器上传大文件的问题 在搭建并使用了云服务器后 我遇到了一个奇怪的问题 如果上传的文件中包含了视屏的话 上传就会失败 同时返回一个402error页面 一开始 我以为是文件类型的问题 通过网上查找后 我发现问题依然在于服务器本身的设置上
  • linux学习lesson14

    目录 1 df命令 2 du命令 3 磁盘分区 1 df命令 命令df disk filesystem的简写 用于查看已挂载磁盘的总容量 使用容量 剩余容量等 可以不加任何参数 默认以KB为单位显 i 表示查看inodes的使用状况 如已使
  • zookeeper环境构建

    关于zookeeper的作用这里不再作详述 相信很多开发人员在很多场景都使用zookeeper作为任务协调 1 安装jdk 这里不述详述 下载jdk压缩包 并在 etc profile中增加相关的环境变量配置 export JAVA HOM

随机推荐

  • python各个版本区别_Python 的各个版本

    Python 现在用的最多的就是两个版本 Python 2 x 系列 以及一个较新的 Python 3 x 系列 Python 3 x 系列是开始于2008年的十二月的 3 0 版本 从这个版本发布开始 Python 2 7 之后就只有小版
  • 解决Jetbrains旗下产品的插件下载失败问题(IntelliJ IDEA、RubyMine、WebStorm、PhpStorm、PyCharm、AppCode、Android Studio等)

    博主主要关注IntelliJ IDEA插件 使用时安装超时 解决办法其实很简单 进入Jetbrains官方插件仓库地址 https plugins jetbrains com 选择你所用的开发工具 然后在左上角搜索框搜索你需要的插件 搜索后
  • JDK1.8 之Stream API总结

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Stream是 Java 8新增加的类 用来补充集合类 Stream代表数据流 流中的数据元素的数量可能是有限的 也可能是无限的 Stream和其它集合类的区别在于 其它集
  • mysql insert into多条_MySql中使用INSERT INTO语句更新多条数据的例子

    我们知道当插入多条数据的时候insert支持多条语句 复制代码 代码如下 INSERT INTO t member id name email VALUES 1 nick nick 126 com 4 angel angel 163 com
  • 如何解决:FileNotFoundError: 以及[Errno 2]No such file or directory

    出错原因 因为种种问题系统无法找到对应路径的文件 案例如下 我在pycharm的目录下新建了一个apple txt文件 想通过open 获取到对应文件里面的内容 结果提示 Errno 2 No such file or directory
  • Spark环境搭建部署全流程(Linux),看这一篇就够了

    前言 本篇文章将给各位展示如何快速地在linux上搭建spark 本文搭建的环境为Vmware 16 pro 下的CentOS 7 linux hadoop版本为3 x以上 Jdk1 8 以下是我总结出的spark几种模式的部署流程 如果是
  • 原来游戏技术行业最大的秘密竟然是...

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由腾讯游戏云发表于云 社区专栏 本篇文章主要是分享游戏业务面临的安全风险场景 以及基于这些场景的特点 我们应该如何做好对应的防护 一 背景 游戏行业DDoS攻击愈演愈烈 2017
  • Python模块multiprocessing & 实现多进程并发

    简介 multiprocessing模块是Python标准库中提供的一个用于实现多进程编程的模块 它基于进程而不是线程 可以利用多核CPU的优势 提高程序的执行效率 同时也可以实现进程间通信和数据共享 目录 1 参数说明 1 1 Proce
  • FastAPI从入门到实战(12)——错误处理

    错误提示是非常重要的 比如权限控制 资源控制等场景 需要服务器返回给用户错误提示 包括状态码和提示等内容 所以本文就主要记录FastAPI里的错误处理相关的内容 抛出一个HTTPException app08 get stu08 id de
  • UE 5 实现骨骼物理模拟 乳摇

    打开角色的物理资产 如果是下载的或者官方的模型 都会内带物理资产 模拟 可以根据分块模拟当前物体的物理效果 点击右上角的模拟 可以模拟布娃娃系统 Ctrl 鼠标右键可以实现对布娃娃施加力的效果 模拟选中项 模拟选中项可以只模拟一部分物体 选
  • 性能监控工具-Grafana安装和使用方法

    Grafana是一款开源的数据可视化和监控平台 它提供了丰富的可视化方式 如图表 仪表盘 警报等 支持多种数据源 包括Prometheus InfluxDB Graphite等 适用于各种规模的系统监控和数据分析 Grafana还有一个强大
  • ef框架 动态切换数据源信息(切换连接字符串)

    在一些特殊的场景 我可能会更换访问的数据库 猜想 玩游戏的时候 选择不同的区登录 选区就是更换数据库 比如你用qq登录王者 可登录1区或者2区 两个区中 你的英雄 皮肤 和段位是不一样的 上下文的调整 1 在上下文中加入一个静态的字段 pr
  • mysql重置数据库主键_重置Mysql主键的方法

    方法一 如果曾经的数据都不需要的话 可以直接清空所有数据 并将自增字段恢复从1开始计数 truncate table 表名 方法二 dbcc checkident table name reseed new reseed value 当前值
  • 数据库:关系模型基本介绍

    关系模型研究什么 关系模型就是处理Table的 它由三个部分组成 1 描述DB各种数据的基本结构形式 2 描述Table与Table之间所可能发生的各种操作 关系运算 3 描述这些操作所应遵循的约束条件 完整性约束 就是要学习 Table如
  • 深度学习工程实践 6. 使用pytorch训练自己的眼球分割模型

    深度学习工程实践 6 使用pytorch训练自己的眼球分割模型 1 概述 2 目标 3 工程实践 3 1 数据寻找 数据标注 3 2 训练 3 3 部署应用到桌面程序 4 总结 1 概述 眼球分割 如果是在特定的眼球拍摄场景下 实际上直接用
  • mysql 视图

    目录 1 视图简介 1 1 视图的含义 1 2 视图的作用 2 创建视图 2 1 创建视图的语法形式 2 2 在单表上创建视图 2 3 在多表上创建视图 3 查看视图 3 1 DESCRIBE语句查看视图基本信息 3 2 SHOW TABL
  • 上海马普计算机考研,【分享】马普所博士研究生计划 - 计算模拟 - 小木虫 - 学术 科研 互动社区...

    马普所博士研究生计划 今年五月起 研究计划 膜与蛋白质及粒子的相互作用 将Monte Carlo与分子动力学以及理论计算相结合 研究吸附或包埋的蛋白质与粒子对生物膜物理相行为的影响 强调模型体系的生物意义 导师介绍 Thomas Weikl
  • 提高代码质量:代码审查

    在项目开发中 代码质量是非常重要的一环 高质量的代码对项目完成质量 能否按时完工有重大影响 而一个团队中开发成员的配置往往是金字塔形的 基于开发成本考虑 项目主管或小组长一般由经验丰富的资深高级程序员担任 开发成员则由普通程序员 新员工 实
  • BUG库,列举我从今天开发遇到的BUG

    java lang IllegalArgumentException Invalid character found in the request target 在请求目标中发现的无效字符 方法请求体传入非法参数 一般是前台的锅 java
  • linux 循环显示所有的sh.*文件.,linuxSHELL学习之循环嵌套、break、continue

    一 循环嵌套1 在for循环中嵌套另一个for循环 root t1 cat t36 sh bin bash for i 1 i lt 3 i do echo out loop i for j 1 j lt 2 j do echo insid