bashfor循环怎么写

1.shell里的for循环怎么写

for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区域(在do和done 之间),直到所有元素取尽为止。

其中,串行是一些字符串的组合,彼此用$IFS所定义的分隔符(如空格符)隔开,这些字符串称为字段。for的语法结构如下:1234for 变量 in 串行do 执行命令done说明: 行1,讲串行中的字段迭代放入变量中 行2-4,接着将重复执行do和done之间的命令区域,直到串行中每一个字段军处理过为止。

流程图:用例1 用for循环在家目录下创建aaa1-aaa10,然后在aaa1-aaa10创建bbb1-bbb10的目录123456789101112#!/bin/bashfor k in $( seq 1 10 )do mkdir /home/kuangl/aaa${k} cd /home/kuangl/aaa${k} for l in $( seq 1 10 ) do mkdir bbb${l} cd /home/kuangl/aaa${k} done cd ..done说明: 行2,seq 用于产生从某个数到另外一个数之间的所有整数。 行4,在家目录下创建文件夹。

行6,在使用一个for循环创建文件夹测试结果:[root@test01 kuangl]# lltotal 80drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa1drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa10drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa2drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa3drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa4drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa5drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa6drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa7drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa8drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa9[root@test01 kuangl]# cd aaa1[root@test01 aaa1]# lltotal 40drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb1drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb10drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb2drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb3drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb4drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb5drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb6drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb7drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb8drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb91用例2 列出var目录下各子目录占用磁盘空间的大小。1234567#!/bin/bashDIR="/var"cd $DIRfor k in $(ls $DIR)do [ -d $k ] && du -sh $kdone说明: 行4,对/var目录中每一个文件,进行for循环处理。

行6,如果/var下的文件是目录,则使用du -sh计算该目录占用磁盘空间的大小。测试结果:[root@test01 scripts]# ./var.sh276M cache4.0K cvs84K db8.0K empty4.0K ftp4.0K games4.0K gdm21G lib4.0K local16K lock7.4G log4.0K logs0 mail4.0K nis4.0K opt4.0K preserve336K run3.7G spool212K tmp4.1G e $varible1 times "donedo和done之间的命令称为循环体,执行次数和list列表中常数或字符串的个数相同。for循环,首先将in后list列表的第一个常数或字符串赋值给循环变量,然后执行循环体,以此执行list,最后执行done命令后的命令序列。

Sheel支持列表for循环使用略写的计数方式,1~5的范围用{1..5}表示(大括号不能去掉,否则会当作一个字符串处理)。Sheel中还支持按规定的步数进行跳跃的方式实现列表for循环,例如计算1~100内所有的奇数之和。

#!/bin/bashsum=0for i in {1..100..2}dolet "sum+=i"doneecho "sum=$sum" 通过i的按步数2不断递增,计算sum值为2500。同样可以使用seq命令实现按2递增来计算1~100内的所有奇数之和,for i in $(seq 1 2 100),seq表示起始数为1,跳跃的步数为2,结束条件值为100。

for循环对字符串进行操作,例如通过for循环显示当前目录下所有的文件。#!/bin/bashfor file in $( ls )#for file in *doecho "file: $file"done 也可一使用for file in *,通配符*产生文件名扩展,匹配当前目录下的所有文件。

for通过命令行来传递脚本中for循环列表参数#!/bin/bashecho "number of arguments is $#"echo "What you input is: "for argument in "$@"doecho "$argument"done$#表示参数的个数,$@表示参数列表而$*则把所有的参数当作一个字符串显示。(3)不带列表for循环 由用户制定参数和参数的个数,与上述的for循环列表参数功能相同。

#!/bin/bashecho "number of arguments is $#"echo "What you input is: "for argumentdoecho "$argument"done比上述代码少了$@参数列表,$*参数字符串。(4)类C风格的for循环 也被称为计次循环#!/bin/bashfor((integer = 1; integer <= 5; integer++))do echo "$integer"done for中第一个表达式(integer = 1)是循环变量赋初值的语句,第二个表达式(integer <= 5)决定是否进行循环的表达式,退出状态为非0时将退出for循环执行done后的命令(与C中的for循环条件是刚好相反的)。

第三个表达式(integer++)用于改变循环变量的语句。Sheel中不运行使用非整数类型的数作为循环变量,循环条件被忽略则默认的退出状态是0,for((;;))为死循环。

类C的for循环计算1~100内所有的奇数之和。#!/bin/bashsum=0for(( i = 1; i <= 100; i = i + 2 ))dolet "sum += i"doneecho "sum=$sum"2、while循环 也称为前测试循环语句,重复次数是利用一个条件来控制是否继续重复执行这个语句。

为了避免死循环,必须保证循环体中包含循环出口条件即表达式存在退出状态为非0的情况。(1)计数器控制的while循环#!/bin/bashsum=0i=1while(( i <= 100 ))dolet "sum+=i"let "i += 2" doneecho "sum=$sum" 指定了循环的次数500,初始化计数器值为1,不断测试循环条件i是否小于等于100。

在循环条件中设置了计数器加2来计算1~100内所有的奇数之和。(2)结束标记控制的while循环 设置一个特殊的数据值(结束标记)来结束while循环。

#!/bin/bashecho "Please input the num(1-10) "read numwhile [[ "$num" != 4 ]]do if [ "$num" -lt 4 ]thenecho "Too small. Try again!"read numelif [ "$num" -gt 4 ]thenecho "To high. Try again" read numelseexit 0fidoneecho "Congratulation, you are right! " 例:通过结束标记控制实现阶乘的操作#!/bin/bashecho "Please input the num "read numfactorial=1while [ "$num" -gt 0 ]dolet "factorial= factorial*num"let "num--"doneecho "The factorial is $factorial"(3)标志控制的while循环使用用户输入的标志值来控制循环的结束(避免不知道循环结束标志的条件)。#!/bin/bashecho "Please input the num "read numsum=0i=1signal=0while [[ "$signal" -ne 1 ]]doif [ "$i" -eq "$num" ]thenlet "signal=1"let "sum+=i"echo "1+2+。

+$num=$sum"elselet "sum=sum+i"let "i++"fidone 标志控制的while循环求1~n的累加和,循环变量值小于100执行else累加同时循环变量加1,直到循环变量值等于100将标志值设置为1,并输出。标志控制的while循环与结束标记控制的while循环的区别是用户无法确定无法确定结束标志,只能程序运行后确定结束标志。

两者也可以相互转化。(4)命令行控制的while循环 使用命令行来指定输出参数和参数个数,通常与shift结合使用,shift命令使位置变量下移一位($2代替$1、$3代替$2,并使$#变量递减),当最后一个参数显示给用户,$#会等于0,$*也等于空。

#!/bin/bashecho "number of arguments is $#"echo "What you input is: "while [[ "$*" != "" ]]doecho "$1"shiftdone循。

bashfor循环怎么写

转载请注明出处育才学习网 » bashfor循环怎么写

知识

android倒计时器怎么写

阅读(235)

本文主要为您介绍android倒计时器怎么写,内容包括android倒计时器设计,android倒计时器设计,android自定义倒计时器。有三种实现方式:第一种:通过Timer与TimerTask结合的方式进行实现第二种:通过Handler与Message方式进行实现第三种

知识

android删除代码怎么写

阅读(228)

本文主要为您介绍android删除代码怎么写,内容包括android开发,delete按钮代码怎么写,android怎么实现卸载代码功能啊我要详细点的往上有的我都不太懂,android朋友圈删除方法源码怎么写。方法/步骤1首先先进入到Android studio的安装路径中,

知识

转行web简历怎么写

阅读(211)

本文主要为您介绍转行web简历怎么写,内容包括转行做web前端开发的简历怎么写,转行简历怎么写,想转行了,简历怎么写。简历不需要文字太多,突出几个重点就行了,工作经验是很重要的一块,比如你之前的工作成绩、你的特长等。 简历最重要的2点,1是能

知识

英文的title怎么写

阅读(288)

本文主要为您介绍英文的title怎么写,内容包括英文推荐信的title怎么写,英文seotitle如何写,英文推荐信的title怎么写。job title 是职称如秘书 Secretary秘书长 Secretary General总裁 President, CEO (Ch

知识

名片上博士头衔怎么写

阅读(256)

本文主要为您介绍名片上博士头衔怎么写,内容包括名片上博士头衔怎么翻译,名片上博士头衔怎么翻译,名片的头衔怎么写。针对每名称,翻译如下,如书写过长,可省略表示“部门”的“Department”一词(如“H.R. Manager”):副行长 Vice-

知识

技术团队介绍怎么写

阅读(257)

本文主要为您介绍技术团队介绍怎么写,内容包括团队的介绍怎么写,团队介绍怎么写,如何写简短的团队介绍。企业融资最应该关注的是团队,而投资者最关注的也是团队;投资人希望看到你要做的事是适合你做的;创业者做项目,需要有相关气质,积累过相关经

知识

飞机的英语单数怎么写

阅读(222)

本文主要为您介绍飞机的英语单数怎么写,内容包括飞机的英语单词怎么写,飞机的英文怎么写,飞机的英文怎么写。aircraft英 [ˈeəkrɑ:ft] 美 [ˈerkræft] 释义:n.飞机,航空器词汇搭配:drone-equipped ai

知识

boys的音标怎么写

阅读(257)

本文主要为您介绍boys的音标怎么写,内容包括boys的音标,boys的音标,boys的音标。boy英音:[bɔi]美音:[bɔɪ] 名词 n. [C]1.少年,男孩Dont cry. Youre a big boy now.别哭

知识

building音标怎么写

阅读(367)

本文主要为您介绍building音标怎么写,内容包括building的音标怎么写,building里u的音标,largebuing的音标怎么写。you may say :what the structure is and what it is used forwhat the s

知识

英文abstract怎么写

阅读(274)

本文主要为您介绍英文abstract怎么写,内容包括谁能详细讲解一下英文论文Abstract写作注意事项不会写啊····,英语专业论文Introduction和Abstract要怎么写二者具体的区别是什么,毕业论文Abstract怎么写。首先看你写的是什么级别的论文,字

知识

copd诊断依据怎么写

阅读(192)

本文主要为您介绍copd诊断依据怎么写,内容包括COPD诊断标准,要求详细一点,谢谢,COPD的诊断标准是什么,COPD的诊断标准是什么如何进行严重程度分级。病情分析:慢性阻塞性肺病(chronic obstructive pulmonary diseases,COPD)是一种具有气流受限

知识

dacula音标怎么写

阅读(285)

本文主要为您介绍dacula音标怎么写,内容包括oat的音标怎么写,Daewoo的音标,Ramada华美达音标。mop: [ mɔp ] n. 拖把,乱蓬蓬的头发v. 用拖把洗擦,擦,拭词形变化: 名词:mopper 动词过去式:mopped 过去

知识

drugstore直邮中国地址怎么写

阅读(217)

本文主要为您介绍drugstore直邮中国地址怎么写,内容包括如何在drugstore(或者其他需要转运的海外购物网站)上用paypal购,DRUGSTORE能直邮吗,请问在drugstore购物,可以寄到中国吗上面地址好象不能选CHINA。1) Shipping information:账单地址填

知识

ds160工作职责怎么写

阅读(270)

本文主要为您介绍ds160工作职责怎么写,内容包括DS160表格学生工作职责填写,我是大三的学生,暑假打算去美国旅,美国160表的工作职责怎么描述更好美国160表的工作职责怎么描爱,ds160表中以往工作经历如何填。ds160表中以往工作经历的填法如下

知识

matlab怎么写一个循环函数

阅读(269)

本文主要为您介绍matlab怎么写一个循环函数,内容包括matlab怎么循环调用一个函数急急急,Matlab编一个循环程序求教,matlab如何写一个循环函数实现多个向量的相似度。digits(10)for i = [0.005 0.001 0.015]f=@(x)([3*log10(x(1))-2*log10(i

知识

shell死循环怎么写

阅读(199)

本文主要为您介绍shell死循环怎么写,内容包括如何用shell写死循环,shell中怎么写一个死循环,shell中怎么写一个死循环。或者你也可以用for语句和dowhile语句来实现,这里就不说了!可是怎么在shell脚本中写死循环呢?对于对shell不怎么熟悉的猿人

知识

小学生循环日记怎么写

阅读(280)

本文主要为您介绍小学生循环日记怎么写,内容包括循环日记怎么写,小学二年级如何写好循环日记,小学二年级如何写好循环日记。范文给你参考我们班是个不寻常的班级,新鲜事层出不穷。 题记这一学期马上又要过去了,随着时光的流逝,同学们改变了好

知识

循环上一条命令批处理怎么写

阅读(238)

本文主要为您介绍循环上一条命令批处理怎么写,内容包括如何通过批处理循环语句让一条命令反复执行,批处理代码(循环一行命令),怎么做个循环执行的批处理命令啊。通过ping命令来实现延时,很容易受到硬件和系统的影响,延时时间波动比较大,不够精确

知识

c语言循环阶乘怎么写

阅读(306)

本文主要为您介绍c语言循环阶乘怎么写,内容包括C语言中阶乘的循环怎么写,C语言中如何编写N的阶乘,用c语言for循环求1到10阶乘。打开visual C++软件,新建任务,鼠标左键点击文件,选择C++ source file:

知识

一年级家长循环日记怎么写

阅读(310)

本文主要为您介绍一年级家长循环日记怎么写,内容包括家长循环日记怎么写,小学二年级如何写好循环日记,一年级孩子如何写日记。范文给你参考我们班是个不寻常的班级,新鲜事层出不穷。 题记这一学期马上又要过去了,随着时光的流逝,同学们改变了

知识

易语言怎么写无限循环

阅读(263)

本文主要为您介绍易语言怎么写无限循环,内容包括易语言如何实现无限循环语句,易语言怎么无限循环,易语言如何实现无限循环语句。.版本 2.支持库 eAPI.子程序 __启动窗口_创建完毕.局部变量 a, 逻辑型a = 假.判断循环首 (a = 假)置剪辑板文本

知识

matlab中for循环怎么写

阅读(281)

本文主要为您介绍matlab中for循环怎么写,内容包括请介绍一下matlab中for循环的怎么使用我不会那个help,matlab中for循环怎么写,matlab中两个变量的for循环怎么写。在classpath(例如web-inf\classes)中放一个log4j.properties就可以了。例子

[/e:loop]