应该是你见过最详细的shell编程循环语句解析了(for循环、while循环、until循环)(二)

简介: 应该是你见过最详细的shell编程循环语句解析了(for循环、while循环、until循环)(二)

三、分隔符


image.png


举例:读取文件,但是文件中有空格

image.png

image.png

解决办法:

image.png

image.png


还有个办法比较简单的,就是使用while read在while的示例3中有介绍,这个不涉及分隔符,但是用for写无法避免


举例:将五个环境分行输出


[root@localhost sh]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#!/bin/bash
IFS_OLD=$IFS
IFS=':'
for i in  $PATH
do
        echo $i
done
IFS=$IFS_OLD

image.png

image.png


四、双循环



外层循环每执行一次,内层循环都要全部执行完毕,下一次外层循环才能再执行


内层循环看作是外层循环的一个命令语句


#!/bin/bash
#双层循环测试
for ((i=1;i<=5;i++))
do
        echo "outer loop: $i"
#外层循环
        for ((j=1;j<=5;j++))
        do
                echo "   inter loop: $j"
#内层循环
        done
done

image.png

image.png


五、退出循环



5.1 exit


外循环1次,内循环3次


image.png

image.png


5.2 break


外循环5次,内循环3次


image.png

image.png

image.png

image.png


5.3 continue

外循环五次,内循环4次


跳过j等于3的循环,其他的循环不影响


在for循环中比较好用,while中慎用


image.png

image.png


5.4 死循环


while循环中一定要注意迭代(自增)的方式

image.png

image.png

image.png


六、总结



for


给了已知的取值列表,使用for循环是首选


循环操作一般会首选for循环


for(())


for i in ...


循环的分隔符 IFS是空格,制表符\t 换行符\n


while


需要满足某种条件时可以使用,不知道循环次数时可以配合配合退出语句(break,exit,continue)实现循环操作


until


不满足条件的时候要已知循环时使用


多线程


{


....


}&


wait


读取文件


法一


while read 变量名


do


....


done < 文件名


法二


cat 文件 |while read 变量名


do


....


done


退出循环


exit  n(0-255)退出shell脚本进程,并且可以返回指定状态码,执行exit后脚本后面的所有语句都不执行


break 跳出当前的循环体,去执行循环后面的语句(默认跳出单层循环),break 2 跳出两层循环


continue 中止某次循环的执行,但不会完全中止整个循环(跳过这次循环);while until循环中使用要慎重,如果continue放在迭代语句前面会造成死循环

目录
相关文章
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
428 5
Java 并发编程——volatile 关键字解析
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
690 8
|
算法 调度 开发者
多线程编程核心:上下文切换深度解析
在多线程编程中,上下文切换是一个至关重要的概念,它直接影响到程序的性能和响应速度。本文将深入探讨上下文切换的含义、原因、影响以及如何优化,帮助你在工作和学习中更好地理解和应用多线程技术。
402 4
|
缓存 Java 调度
多线程编程核心:上下文切换深度解析
在现代计算机系统中,多线程编程已成为提高程序性能和响应速度的关键技术。然而,多线程编程中一个不可避免的概念就是上下文切换(Context Switching)。本文将深入探讨上下文切换的概念、原因、影响以及优化策略,帮助你在工作和学习中深入理解这一技术干货。
370 10
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
设计模式 安全 Java
Java编程中的单例模式深入解析
【10月更文挑战第31天】在编程世界中,设计模式就像是建筑中的蓝图,它们定义了解决常见问题的最佳实践。本文将通过浅显易懂的语言带你深入了解Java中广泛应用的单例模式,并展示如何实现它。
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
512 4
|
负载均衡 JavaScript 前端开发
分片上传技术全解析:原理、优势与应用(含简单实现源码)
分片上传通过将大文件分割成多个小的片段或块,然后并行或顺序地上传这些片段,从而提高上传效率和可靠性,特别适用于大文件的上传场景,尤其是在网络环境不佳时,分片上传能有效提高上传体验。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

推荐镜像

更多
下一篇
开通oss服务