Shell入门教程:流程控制(5)for 循环
for循环的运作方式,是将 串行 的元素的元素一一取出,依序放入制定的变量中,然后重复执行含括的命令区域(在 do 与 done 之间),直到所有元素取尽为止。
其中,串行是一些字符串的组合,彼此用 $IFS 所定义的 分隔符(如空格符)隔开,这些字符串称为字段。
for的语法结构如下:
for 变量 in 串行
do
命令区域
done
举例:
for i in 1 2 3 4
do
echo $i
done
for循环的语法中,“in串行”这段可以省略不写,此时,Bash会由命令行读取各个参数,轮循代入变量中,作用同以下用法:
for 变量 in $@
do
命令区域
done
$@ 代表命令行所有的参数。
for循环经常用在分割字符串行,取出字段元素值。
IFS=':'
PL="root:x:0:0:root:/root:/bin/Bash" for f in $PL
do
echo $f
done
比较经典的做法是取出 CSV 文件各行的字段。CSV文件是一种用,(逗号)分隔数据字段的纯文本文件,适合担任数据库之间汇入、导出数据的中介。
取出CSV文件各行字段的做法如下:
#!/bin/bash declare -i i=0
for line in $(cat cvsfile.txt)
do
i=i+1
echo -n "第 $i 行的字段有:"
save_ifs=$IFS
IFS=','
for f in $line
do
echo -n $f ' '
done
IFS=$save_ifs
echo
done
for循环也经常用在处理目录中的文件:
#!/bin/bash DIR="/root"
for f in $(ls $DIR)
do
echo '文件:' $f
done
列出 /root 目录下的文件,但不包括隐藏文件。
再看一个例子:
#!/bin/bash DIR="/var"
cd $DIR
for f in $(ls $DIR)
do
[ -d $f ] && du -s $f
done
这个程序用来列出 /var 目录下各个子目录占用的磁盘空间大小。
for 的另一种用法:
for ((初始条件; 终止条件; 异动项))
do
命令区域
done
举例:
#!/bin/bash declare -i i sum
for ((i=1; i<=10; i=i+1))
do
let sum+=i
done echo $sum
for 无穷循环:
for ((;1;))
do
命令区域
done
要想中断无穷循环,得键入 Ctrl + C。
Shell入门教程:流程控制(5)for 循环的更多相关文章
- Shell入门教程:流程控制(1)命令的结束状态
在Bash Shell中,流程控制命令有2大类:“条件”.“循环”.属于“条件”的有:if.case:属于“循环”的有:for.while.until:命令 select 既属于“条件”,也属于“循环 ...
- shell脚本之流程控制
shell脚本之流程控制 shell脚本之流程控制 条件语句 条件判断 循环语句for,while,until for循环 while循环 until循环 循环控制语句continue 循环控制语 ...
- [转帖]流程控制:for 循环
流程控制:for 循环 http://wiki.jikexueyuan.com/project/linux-command/chap34.html need more study need more ...
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...
- Python3.7.4入门-2流程控制工具
2 流程控制工具 记得在语句后加冒号 2.1 while # Fibonacci series: # the sum of two elements defines the next a, b = 0 ...
- python语法入门之流程控制
python语法入门之流程控制 流程控制是指控制流程,具体指控制程序执行的流程. 流程控制分为三种: 1.顺序结构 程序从上而下的正常执行(正常执行的代码就是顺序结构) 2.分支结构 赋予程序人的思维 ...
- Shell命令和流程控制
Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字 ...
- SSIS从理论到实战,再到应用(4)----流程控制之For循环
原文:SSIS从理论到实战,再到应用(4)----流程控制之For循环 上期回顾: SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器 在SSIS体系中,控制流可能经常会遇到 ...
- SSIS从理论到实战,再到应用(5)----流程控制之Foreach循环
原文:SSIS从理论到实战,再到应用(5)----流程控制之Foreach循环 上期回顾: SSIS从理论到实战,再到应用(4)----流程控制之For循环 上一期讲了For循环,Foreach循环相 ...
- 04-Python入门学习-流程控制
一.流程控制if 语法1: if 条件: code1 code2 code3 .... age=180 height=163 weight=75 sex='female' is_beautif ...
随机推荐
- required string parameter XXX is not present
@RequestParam jQuery调用方式: deleteFile: function(filePath) { return ajax({ method: 'POST', url: '/cm/s ...
- Bean生命周期及BeanFactory
1.spring通过BeanFactory灵活配置.管理bean,Spring对管理的bean没有任何特别的要求,完全支持对POJO的管理: 2.BeanFactory有个ApplicationCon ...
- inverse
首先术语inverse 被翻译为反转的意思.inverse 制定了关联关系中的方向. 当set的inverse属性默认情况下,hibernate会按照持久化对象的属性变化来同步更新数据库. 得到两条s ...
- hibernate缓存
http://www.cnblogs.com/wean/archive/2012/05/16/2502724.html http://www.cnblogs.com/xiaoluo501395377/ ...
- Confluence Wiki -- 页面限制
Confluence Wiki 中 [页面设置] 应该如何理解? 当一个用户有这个权限后,这个用户可以对一个页面做限制,可以限制这个页面不能被其他用户浏览或编辑: 反之,如果没有这个权限,那么这个用户 ...
- .Net JIT
.Net JIT(转) JIT
- 基于SoCkit的opencl实验1-基础例程
基于SoCkit的opencl实验1-基础例程 准备软硬件 Arrow SoCkit Board 4GB or larger microSD Card Quartus II v14.1 SoCEDS ...
- jquery-leonaScroll-1.1-自定义滚动条插件
leonaScroll-1.1最新版-竖向 leonaScroll-1.1.js欢迎使用leonaScroll-1.1.js,此滚动条仅支持竖向滚动,如您在使用过程中发现更多问题,欢迎指正! 更新:1 ...
- Java Collection
在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便.这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结 ...
- Django 1.9 Post 时候出现 CSRF token missing or incorrect 错误
get 的时候没有问题,只有在post的时候出现出现这个错误 在方法中加入 @csrf_exempt