1 C语言风格的for循环

格式如下:

for ((exp1;exp2;exp3))
dostatements
done

运行过程:
1)先执行exp1;
2 )再执行exp2,如果它的判断结果成立,则执行循化体中的语句,否则结束整个for循环;
3)执行完循环体后再执行exp3;
4)重复执行步骤2)和3),直到exp2的判断结果不成立,就结束循环。
上面的步骤中,第二步和第三步合并在一起算一次循环,会重复执行。for语句的主要作用就是不断执行步骤2)和3)

注意:
1)exp1仅在第一次循环时执行,以后都不会再执行。可以认为这是一个初始化语句
2)exp2一般是一个关系表达式,决定了是否有还要继续下次循环,称为“循化条件”
3)exp3很多情况下是一个带有自增或自减运算的表达式,以使循环条件逐渐变得“不成立”
4)for循环中的exp1、exp2、exp3都是可选项,都可以省略,但分号必须保留。

格式:

for ((初始化语句;判断条件;自增或自减))

示例一:计算1到100的和

#!/bin/bashsum=0
for ((i=1;i<=100;i++))
do((sum += i))
done
echo "The sum is $sum"

变形一:省略初始化条件

#!/bin/bash
i=1                #把初始化条件提前写在for语句前面
sum=0
for ((;i<=100;i++))   #即使省略了exp1,它后面的分号仍然需要保留
do((sum += i))
done
echo "The sum is $sum"

变形二:省略判断条件

#!/bin/bashsum=0
for ((i=1;;i++))     #分号不能省略
doif ((i>100));then  #把判断条件写成if语句在for循环体中breakfi((sum += i))
done
echo "The sum is $sum"

变形三:省略自增或自减

#!/bin/bashsum=0
for ((i=1;i<=100;))
do((sum += i))((i++))       #把自增或自减写进循环体中
done
echo "The sum is $sum"

变形四:全部省略

#!/bin/bash
i=1
sum=0
for ((;;))
doif ((i>100));thenbreakfi((sum += i))((i++))
done
echo "The sum is $sum"

2 python风格的for in循环

格式:

for variable in value_list
dostatements
done

其中variable表示变量,value_list表示取值列表

运行过程:
每次循环都会从value_list中取出一个值赋给变量variable,然后进入循环体,执行循环中的statements,直到取完value_list中的所有值,循环结束。

示例一:value_list:直接给出具体的值

#!/bin/bashsum=0
for n in 1 3 5 7 9
doecho $n((sum+=n))
doneecho "The sum is $sum"


示例二:value_list:直接给出具体的值

#!/bin/bash
#value_list:直接给出具体的值for str in "hello" "world" "hello world"
doecho $str
done


示例三:value_list:给出一个取值范围

#!/bin/bash
#value_list:给出一个取值范围 {start...end}
# start:起始值 end:终止值
# 注意:中间用两个点相连
# 注意:这种形式只支持数字和字母sum=0
for i in {1..100}
do((sum+=i))
doneecho "The sum is $sum"


示例四:value_list:给出一个取值范围

#!/bin/bash
for c in {A..z}
doprintf "%c" $c
done


示例五:value_list:根据命令的执行结果

#!/bin/bash
# 根据命令的执行结果
# 获取命令执行结果:反引号`` 或者$()# 计算1到100之间所有奇数的和sum=0
for i in $(seq 1 2 100) #seq是一个linux命令 用来产生某个范围内的整数 并且可以设置步长
do((sum+=i))
done
echo $sum


示例六:value_list:命令的结果

#!/bin/bash
#value_list:命令的结果
for filename in $(ls *.sh)
doecho $filename
done


示例七:value_list:可以使用通配符

#!/bin/bash
# 可以使用通配符for filename in *.sh
doecho $filename
done


示例八:value_list:可以使用特殊符号

#!/bin/bash
# 可以使用特殊符号
# $@ 表示参数列表中所有参数function func() {for str in $@do echo $strdone
}func shell python java c++


示例九:value_list可以省略

#!/bin/bash
# 可以使用特殊符号
# $@ 表示参数列表中所有参数function func() {for str   #这里的value_list可以省略do echo $strdone
}func shell python java c++

shell脚本学习(十三)——for循环语句相关推荐

  1. linux循环脚本while循环,Shell脚本while、until循环语句简明教程

    一.while循环 while循环用于不断执行一系列命令,也用于从输入文件中读取数据:命令通常为测试条件.其格式为: while 命令 do command1 command2 ... command ...

  2. shell 脚本学习及troubleshooting

    shell 脚本学习及troubleshooting Shell问题一: $ FILENAME="My Document" 含有空格的文件名 $ ls $FILENAME 列出来试 ...

  3. linux shell脚本学习

    linux shell脚本学习笔记 文章目录 linux shell脚本学习笔记 一.脚本入门 1.我的第一个linux脚本 2.关于date命令的知识 二.shell脚本中的变量 1.为什么脚本需要 ...

  4. Linux的shell脚本实战之while循环

    Linux的shell脚本实战之while循环 一.使用while循环计算 1.计算从1加到100之和 2.计算1-2+3-4+5....-100的值 二.while语句的三种方式 1.通过输入重定向 ...

  5. Shell脚本学习-阶段二

    文章目录-Shell脚本学习阶段二 前言 shell脚本实操2 1.获取随机字符串或数字 2.定义一个颜色输出字符串函数 3.批量创建用户 4.检查软件包是否安装 5.检查服务状态 6.检查主机存活状 ...

  6. shell脚本for循环_了解Shell脚本中的for循环

    shell脚本for循环 Continuing on from our previous tutorials, let's understand the for loop in shell scrip ...

  7. Shell脚本(学习笔记1)

    shell脚本学习记录 为什么学习shell脚本? 在一些复杂的linux维护工作过程中,大量的重复性的输入和交互操作不但费时费力,而且容易出现错误:然而编写shell脚本程序,可以批量处理.自动化的 ...

  8. BASH命令和SHELL脚本学习

    BASH命令和SHELL脚本学习 转载于:https://www.cnblogs.com/huolong123/p/6228049.html

  9. sql脚本语言中的循环语句介绍

    sql脚本语言中的循环语句介绍 –sql脚本语言的循环介绍: –1.goto循环点. declare x number; begin x:=0;–变量初始化: <<repeat_loop& ...

  10. shell脚本学习笔记一

    又开始写学习笔记了,呵呵... 今年打算选择一门技术系统的学习一下.编程语言.虚拟机技术.数据库.大数据.云计算在这些种类中,我选择了shell编程.为什么选择shell呢?也没有什么具体的原因.以前 ...

最新文章

  1. 关于android基础教程一书的初步解读后发现的一些问题
  2. JavaScript命名空间
  3. vant显示日期格式_Vue+Vant ui实现日期时间选择
  4. React开发(101):样式处理
  5. redis 缓存预热_Redis异常问题解决方案:缓存雪崩、预热、穿透、击穿、降解方案分析...
  6. Numpy库的学习(三)
  7. 自动化测试学习之路--HTML常见元素、属性的简单学习
  8. python怎么读写文件-python怎么读取文件内容
  9. mysql可以用表情符号_让MySQL支持emoji表情符号存储
  10. 电脑变慢,电脑运行速度 突然变慢是怎么回事
  11. [软件工程] 千帆竞发图的制作
  12. 工业控制信息系统中的商用密码应用思考
  13. MMCM时钟动态调相
  14. ESP8266_设置AP模式,WiFi名称密码
  15. 学习笔记:快速入门ZooKeeper技术
  16. 花开不败——复旦中文系女生的高三笔记
  17. 【装机心得】关于系统启动U盘的那些事(上)
  18. 三款Android平台音乐播放器多方位对比
  19. 【英语】人生千变万化,不要因挫折而苦恼
  20. Andrew NG 《machine learning》week 2,class3 —Computing Parameter Analytically

热门文章

  1. 【ReView】 学习日志 from18/11/24 to 19/7/10
  2. 男程序员写代码的样子 VS 女程序员写代码的样子
  3. 【面试】数据仓库面试经验总结
  4. 环境配置之Keepass
  5. 前端面试题综合(四)
  6. Java8新特性之- Lambda表达式和函数式接口
  7. svn提示没有设置冲突_SVN出现叹号文件冲突解决办法
  8. 最长无重复子数组算法-java实现
  9. Linux上传GitHub【超详细】
  10. 几个基础的DOS命令和(知道对方IP入侵对方的方法)