shell循环 | 您所在的位置:网站首页 › shell脚本while无限循环 › shell循环 |
运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai 领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维 循环 循环执行介绍将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件 重复运行次数 循环次数事先已知 循环次数事先未知常见的循环的命令:for, while, until 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 实验室设备网 版权所有 |