Shell入门教程:流程控制(5)for 循环
2016-07-14 11:48
609 查看
for循环的运作方式,是将 串行 的元素的元素一一取出,依序放入制定的变量中,然后重复执行含括的命令区域(在 do 与 done 之间),直到所有元素取尽为止。
其中,串行是一些字符串的组合,彼此用 $IFS 所定义的 分隔符(如空格符)隔开,这些字符串称为字段。
for的语法结构如下:
for 变量 in 串行
do
命令区域
done
举例:
for循环的语法中,“in串行”这段可以省略不写,此时,Bash会由命令行读取各个参数,轮循代入变量中,作用同以下用法:
$@ 代表命令行所有的参数。
for循环经常用在分割字符串行,取出字段元素值。
比较经典的做法是取出 CSV 文件各行的字段。CSV文件是一种用,(逗号)分隔数据字段的纯文本文件,适合担任数据库之间汇入、导出数据的中介。
取出CSV文件各行字段的做法如下:
for循环也经常用在处理目录中的文件:
列出 /root 目录下的文件,但不包括隐藏文件。
再看一个例子:
这个程序用来列出 /var 目录下各个子目录占用的磁盘空间大小。
for 的另一种用法:
for ((初始条件; 终止条件; 异动项))
do
命令区域
done
举例:
for 无穷循环:
要想中断无穷循环,得键入 Ctrl + C。
其中,串行是一些字符串的组合,彼此用 $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入门教程:流程控制(4)case 条件判断
- 【重点】Shell入门教程:流程控制(3)条件判断式的真假值
- 【重点】Shell入门教程:流程控制(2)条件判断的写法
- Shell入门教程:流程控制(1)命令的结束状态
- Shell入门教程:算术运算
- Powershell AWS 自动化管理 (8) - CloudFront
- Linux shell脚本判断输入目录是否存在,并输出目录所在磁盘使用量
- Linux shell脚本学习资料
- shell学习-5
- 关于Shell脚本编程不得不知的几个细节
- Shell脚本编程入门(1)条件判断
- Shell入门教程:Shell变量
- Shell入门教程:Shell的基本结构
- Shell入门教程:Shell函数的返回值
- Shell入门教程:Shell函数详解
- Shell入门教程:Shell当中的特殊变量
- bash shell:获取当前脚本的绝对路径(pwd/readlink)
- shell学习-4
- bash 中的 ${ # % : / } 使用
- shell学习-3