当前位置: 首页 > Linux

Linuxbashfor循环的工作原理

时间:2023-04-06 22:14:50 Linux

for循环是Linuxshell中最常用的结构。for循环有三种结构:一种结构是listfor循环;第二个结构是没有列表的for循环;第三个结构是类似C语言的for循环。这篇博文重点介绍循环列表。listfor循环的大格式是固定的。列表构成的场景有很多,比如数字列表、字符串列表、命令列表、脚本参数列表等,我们一一来看。更详细地了解Linux如何使用bashfor循环列表for循环语句用于将一组命令执行已知次数。语句的基本格式如下`forvariablein(list)docommandcommanddone`其中,do和done之间的命令成为循环体,执行次数与in中常量或字符串的次数相同列表列表。执行for循环时,先将in之后列表中的第一个常量或字符串赋值给循环变量,然后执行循环体;然后将列表中的第二个常量或字符串赋值给循环变量,再次执行循环体。这个过程会一直持续到list列表中没有其他常量或字符串为止,然后执行done命令后的命令序列。ex1、当listfor循环中的list为常量时`#!/bin/bash#使用listfor循环显示5个welcomeoperationsforvariablein12345doecho"Hello,welcome$variabletimes"done`这个例子的循环经常用到计数,范围限制在1到5之间,下面是脚本的执行结果。由于in后面的列表中列出了5个参数,可以看出该脚本进行了5次欢迎操作。[zhangqi@localhostshellscript]$shfor_ex1.sh你好,欢迎1次你好,欢迎2次你好,欢迎3次你好,欢迎4次你好,欢迎5次[zhangqi@localhostshellscript]$Linuxshell中for循环的支持列表脚本中使用了简写计数法,我们对脚本ex2略作改进,列表为简写形式#!/bin/bash#使用列表for循环显示{1..5中变量的5个欢迎操作}doecho"Hello,welcome$variabletimes"done执行后结果同脚本1[zhangqi@localhostshellscript]$shfor_ex2.sh你好,欢迎1次你好,欢迎2次你好,欢迎3次你好,欢迎4次你好,欢迎5次[zhangqi@localhostshellscript]$上面的例子,我们将1~5简写,这样可以正常输出和例子1一样的结果ex3,列表为简写形式#!/bin/bash#UsethelistforloopDisplay5welcomeoperationsforvariablein$(seq15)doecho"Hello,welcome$variabletimes"doneseq命令是Linux预设的外部命令。一般用于简化一串数字的书写。可以参考linux常用命令seq。执行后结果同上,不再重复贴出。ex4、通过跳转步数实现列表#!/bin/bash#使用列表for循环显示{1..5..2}中变量的5个欢迎操作doecho"Hello,welcome$variabletimes"donein{1..5..2}实现1~5以内的数字,按照步骤2的数字跳转运行,看结果[zhangqi@localhostshellscript]$shfor_ex4.sh你好,欢迎1次你好,welcome3次你好,欢迎5次[zhangqi@localhostshellscript]$ex5,跳转方式用seq表示[zhangqi@localhostshellscript]$catfor_ex5.sh#!/bin/bash#使用listfor循环显示5welcomeoperationsforvariablein$(seq125)doecho"Hello,welcome$variabletimes"done[zhangqi@localhostshellscript]$shfor_ex5.sh你好,欢迎1次你好,欢迎3次你好,欢迎5次[zhangqi@localhostshellscript]$ex6,用字符串表示list[zhangqi@localhostshellscript]$catfor_ex6.sh#!/bin/bash#用listfor循环显示周一到周日对应的英文fordayinMondayTuesdayWednesdayThursdayFridaySaturdaySundaydoecho"$day"done[zhangqi@localhostshellscript]$shfor_ex6.shMondayTuesdayWednesdayThursdayFridaySaturdaySunday[zhangqi@localhostshellscript]$ex7,使用命令表达列表[zhangqi@localhostshellscript]$catfor_ex7.sh#!/bin/bash#Usecommandtoprintarrayforvariablein`ls/`doecho"Everydirectoryis$variable"done[zhangqi@localhostshellscript]$shfor_ex7.sh每个目录都是bin每个目录都是boot每个目录都是dev每个目录都是etc每个目录都是home每个目录都是lib每个目录都是lost+found每个目录都是media每个目录都是mnt每个目录都是opt每个目录都是proc每个目录都是root每个目录都是sbin每个目录都是selinux每个目录都是srv每个目录都是sys每个目录都是tmp每个目录都是usr每个目录都是var[zhangqi@localhostshellscript]$这里的命令格式可以用$(command)或者command,效果一样的,这里不再展示ex8,通过脚本传递参数,实现列表[zhangqi@localhostshellscript]$catfor_ex8.sh#!/bin/bashecho"参数个数为$#"echo"你输入的是:"#使用命令打印"$*"中参数数组doecho"$argument"done[zhangqi@localhostshellscript]$shfor_ex8.sh1helloshellnumberofargumentsis3Whatyouinputis:1helloshell[zhangqi@localhostshellscript]$可以可以看出参数列表可以是数字也可以是字符串,但是输入之间用空格隔开。如果有空格,脚本在执行时会认为还有另外一个参数。更多内容:Linux新手必读的30条Linux命令有哪些Linux常用命令及其使用方法