shell脚本学习(十三)——for循环语句
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循环语句相关推荐
- linux循环脚本while循环,Shell脚本while、until循环语句简明教程
一.while循环 while循环用于不断执行一系列命令,也用于从输入文件中读取数据:命令通常为测试条件.其格式为: while 命令 do command1 command2 ... command ...
- shell 脚本学习及troubleshooting
shell 脚本学习及troubleshooting Shell问题一: $ FILENAME="My Document" 含有空格的文件名 $ ls $FILENAME 列出来试 ...
- linux shell脚本学习
linux shell脚本学习笔记 文章目录 linux shell脚本学习笔记 一.脚本入门 1.我的第一个linux脚本 2.关于date命令的知识 二.shell脚本中的变量 1.为什么脚本需要 ...
- Linux的shell脚本实战之while循环
Linux的shell脚本实战之while循环 一.使用while循环计算 1.计算从1加到100之和 2.计算1-2+3-4+5....-100的值 二.while语句的三种方式 1.通过输入重定向 ...
- Shell脚本学习-阶段二
文章目录-Shell脚本学习阶段二 前言 shell脚本实操2 1.获取随机字符串或数字 2.定义一个颜色输出字符串函数 3.批量创建用户 4.检查软件包是否安装 5.检查服务状态 6.检查主机存活状 ...
- shell脚本for循环_了解Shell脚本中的for循环
shell脚本for循环 Continuing on from our previous tutorials, let's understand the for loop in shell scrip ...
- Shell脚本(学习笔记1)
shell脚本学习记录 为什么学习shell脚本? 在一些复杂的linux维护工作过程中,大量的重复性的输入和交互操作不但费时费力,而且容易出现错误:然而编写shell脚本程序,可以批量处理.自动化的 ...
- BASH命令和SHELL脚本学习
BASH命令和SHELL脚本学习 转载于:https://www.cnblogs.com/huolong123/p/6228049.html
- sql脚本语言中的循环语句介绍
sql脚本语言中的循环语句介绍 –sql脚本语言的循环介绍: –1.goto循环点. declare x number; begin x:=0;–变量初始化: <<repeat_loop& ...
- shell脚本学习笔记一
又开始写学习笔记了,呵呵... 今年打算选择一门技术系统的学习一下.编程语言.虚拟机技术.数据库.大数据.云计算在这些种类中,我选择了shell编程.为什么选择shell呢?也没有什么具体的原因.以前 ...
最新文章
- 关于android基础教程一书的初步解读后发现的一些问题
- JavaScript命名空间
- vant显示日期格式_Vue+Vant ui实现日期时间选择
- React开发(101):样式处理
- redis 缓存预热_Redis异常问题解决方案:缓存雪崩、预热、穿透、击穿、降解方案分析...
- Numpy库的学习(三)
- 自动化测试学习之路--HTML常见元素、属性的简单学习
- python怎么读写文件-python怎么读取文件内容
- mysql可以用表情符号_让MySQL支持emoji表情符号存储
- 电脑变慢,电脑运行速度 突然变慢是怎么回事
- [软件工程] 千帆竞发图的制作
- 工业控制信息系统中的商用密码应用思考
- MMCM时钟动态调相
- ESP8266_设置AP模式,WiFi名称密码
- 学习笔记:快速入门ZooKeeper技术
- 花开不败——复旦中文系女生的高三笔记
- 【装机心得】关于系统启动U盘的那些事(上)
- 三款Android平台音乐播放器多方位对比
- 【英语】人生千变万化,不要因挫折而苦恼
- Andrew NG 《machine learning》week 2,class3 —Computing Parameter Analytically