一、循环嵌套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

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

  1. linux 循环显示所有的sh.*文件.,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法...

    环境: Ubuntu下采用shell脚本实现 案例简述:文件夹内有许多子文件夹,这里需要自动读取所有的文件,包括他们的地址和文件名.通过观察文件名的规律,按照一定的规则裁剪出文件名的某一部分,该部分为 ...

  2. linux 常用命令之运行.sh文件

    linux 常用命令之运行.sh文件 Linux下面用命令如何运行.sh文件的方法 一.直接./加上文件名.sh,如运行hello.sh为./hello.sh[hello.sh必须有x权限] 二.直接 ...

  3. linux系统上运行sh,Linux系统下如何运行.sh文件的实现

    Linux系统下如何运行.sh文件的实现 在Linux系统下运行.sh文件有两种方法,比如我在root目录下有个datelog.sh文件 第一种(这种办法需要用chmod使得文件具备执行条件(x): ...

  4. Linux目录结构,命令,文件类型学习

    2019独角兽企业重金招聘Python工程师标准>>> [toc] Linux目录结构,命令,文件类型学习 一. 系统目录结构 简述 对于目录,我们大致能够理解,像书本学的章节,每个 ...

  5. 【Linux中shell命令】.sh文件种种操作

    文章目录 Shell基础 Shell本身 Shell脚本 第一个Shell脚本 运行Shell脚本有三种方式 Shell bash和sh区别 .sh文件与.bash文件 Shell内置变量命令 eva ...

  6. linux下双击sh文件夹,Linux系统下如何运行.sh文件的实现

    在Linux系统下运行.sh文件有两种方法,比如我在root目录下有个datelog.sh文件 第一种(这种办法需要用chmod使得文件具备执行条件(x): chmod u+x datelog.sh) ...

  7. linux打印显示etc中的文件,Linux命令之文件内容查看(cat、tac、nl、more、less、head、tail)...

    本文将学到的命令 cat tac nl more less head tail cat(从第一行开始显示文件内容) 首先来看一下官方文档 man cat CAT(1) GNU CAT(1) NAME ...

  8. 在linux下怎么建立sh文件,Linux系统下如何运行.sh文件的实现

    在Linux系统下运行.sh文件有两种方法,比如我在root目录下有个datelog.sh文件 第一种(这种办法需要用chmod使得文件具备执行条件(x): chmod u+x datelog.sh) ...

  9. [linux]linux 常用命令之运行.sh文件

    Linux下面用命令如何运行.sh文件的方法 一.直接./加上文件名.sh,如运行hello.sh为./hello.sh[hello.sh必须有x权限] 二.直接sh 加上文件名.sh,如运行hell ...

最新文章

  1. Java接口对Hadoop集群的操作
  2. 转:并口编程参考资料
  3. Python类与对象技巧(1):字符串格式化、封装属性名、可管理的属性、调用父类方法
  4. onTouchEvent
  5. H5禁止手机自带键盘弹出
  6. 使用JacpFX和JavaFX2构建富客户端
  7. 【渝粤题库】国家开放大学2021春1703农村发展理论与实践题目
  8. 开源不止,前进不息:2018 OpenInfra Days China来了!
  9. mac mongodb可视化工具_MongoDB从立地到成佛(介绍、安装、增删改查)
  10. 现代web数据传输技术及数据格式
  11. FreeCAD源码分析:Assembly4模块
  12. 爱的能力(徐博客写的-收藏下)
  13. CTO、技术总监、首席架构师的区别
  14. AndroidStudio软件用法详细说明
  15. Python有嘻哈:Crossin教你用代码写出押韵的verse
  16. multisim中轻触开关在哪_轻触开关在各种电子产品上的运用
  17. [个人笔记]操作系统复习笔记
  18. 计算机应用基础商娟叶,探究混合式学习在中职计算机基础教学中的设计与应用...
  19. 关于我开始使用博客的这件事
  20. 30天自制操作系统【笔记】

热门文章

  1. html中字体的单位,CSS中字体单位:px、em、rem和%
  2. 持续交付到底有什么价值?
  3. 总体样本方差的无偏估计样本方差为什么除以n-1
  4. 20211026gfsj_re_gametime
  5. php正则表达式/U是什么意思?/iU又是什么意思?
  6. 没运营过的公司如何注销?
  7. 千万别做这5类求职者,找不到工作
  8. 数据挖掘——为什么使用哑变量?哑变量有哪些作用?哪些情况应该使用哑变量?
  9. php中什么是形参和实参,形参和实参的概念
  10. 软件咨询——并不像看上去那样简单