码迷,mamicode.com
首页 > 系统相关 > 详细

Shell入门教程:流程控制(5)for 循环

时间:2016-07-14 13:10:52      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

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 循环

标签:

原文地址:http://www.cnblogs.com/52php/p/5669938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!