shell循环 您所在的位置:网站首页 shell脚本while无限循环 shell循环

shell循环

#shell循环| 来源: 网络整理| 查看: 265

干货资料

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai 领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

循环 循环执行介绍

shell循环插图

将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件

重复运行次数

循环次数事先已知 循环次数事先未知

常见的循环的命令:for, while, until

shell循环插图1

for循环

格式1:

for 变量名 in 列表;do 循环体 done

执行机制: 依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束

for循环列表生成方式:

直接给出列表 整数列表: {start..end} $(seq [start [step]] end) 返回列表的命令: $(COMMAND) 使用glob,如:*.sh 变量引用,如:$@,$#

范例: 九九乘法表

#!/bin/bash for i in {1..9};do for j in seq $i;do echo -e "{j}x{i}=$[i*j]\t\c" done echo done

范例:生产案例

[root@centos8 ~]#cat /data/script40/for_rename.sh #!/bin/bash # #******************************************************************** #Author: wangxiaochun #QQ: 29308620 #Date: 2020-01-03 #FileName: /data/script40/for_rename.sh #URL: http://www.magedu.com #Description: The test script #Copyright (C): 2020 All rights reserved #******************************************************************** DIR=/data/test cd $DIR for FILE in * ;do PRE=echo FILE | sed -nr 's/(.*)\.([^.]+)/\1/p' # SUFFIX=echo FILE | sed -nr 's/(.*)\.([^.]+)/\2/p' mv FILEPRE.bak done

范例:M37期面试题,要求将目录YYYY-MM-DD/中所有文件,移动到YYYY-MM/DD/下

#1 yyyy-mm-dd10.sh 创建YYYY-MM-DD,当前日期一年前365天到目前共365个目录,里面有10个文件,$RANDOM.log [root@centos8 ~]#cat dir20.sh #!/bin/bash for i in {1..365};do DIR=date -d "-$i day" +%F mkdir DIR cdDIR for n in {1..10};do touch RANDOM.log done cd .. done #2 移动到YYYY-MM/DD/下 #!/bin/bash # DIR=/data/test cdDIR for DIR in * ;do YYYY_MM=echo $DIR |cut -d"-" -f1,2 DD=echo $DIR |cut -d"-" -f3 [ -d YYYY_MM/DD ] || mkdir -p YYYY_MM/DD &> /dev/null mv DIR/*YYYY_MM/$DD done

格式2

双小括号方法,即((…))格式,也可以用于算术运算,双小括号方法也可以使bash Shell实现C语言风格的变量操作 I=10;((I++))

for ((控制变量初始化;条件判断表达式;控制变量的修正表达式)) do 循环体 done

说明:

控制变量初始化:仅在运行到循环代码段时执行一次 控制变量的修正表达式:每轮循环结束会先进行控制变量修正运算,而后再做条件判断

范例:

#!/bin/bash # #******************************************************************** #Author: wangxiaochun #QQ: 29308620 #Date: 2020-01-03 #FileName: for_sum2.sh #URL: http://www.magedu.com #Description: The test script #Copyright (C): 2020 All rights reserved #******************************************************************** for((sum=0,i=1;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有