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 [email protected]
do
	命令区域
done

[email protected] 代表命令行所有的参数。

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。

时间: 2024-08-30 00:09:20

Shell入门教程:流程控制(5)for 循环的相关文章

Shell入门教程:流程控制(1)命令的结束状态

在Bash Shell中,流程控制命令有2大类:“条件”.“循环”.属于“条件”的有:if.case:属于“循环”的有:for.while.until:命令 select 既属于“条件”,也属于“循环”.不管是哪一种,均需进行条件测试,再根据测试结果,决定程序流程进行的方向. 以下逐一说明这些命令的用法. 第一节:命令的结束状态 Bash Shell Script 可由许多命令组成.每一个命令执行后,都会传回一个结束状态值,如果执行成功,传回0,如果执行失败,则传回非0值.执行失败,也分成许多状

shell脚本之流程控制

shell脚本之流程控制 shell脚本之流程控制 条件语句 条件判断 循环语句for,while,until for循环 while循环 until循环 循环控制语句continue 循环控制语句break 循环控制shift命令 创建无限循环 while的特殊用法 for的特殊用法 select循环与菜单 select与case 信号捕捉trap 条件语句 选择执行: 注意:if语句可嵌套 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件为

shell脚本编程——流程控制

shell脚本编程--流程控制 目   录 一. if 二. case 三. for 四. while 五. until 六. 综合应用 一.if 1.语法 (1)单分支 if  判断条件:then fi (2)双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi (3)多分支 if 判断条件1; then 条件为真的分支代码 elif 判断条件2; then 条件为真的分支代码 elif 判断条件3; then 条件为真的分支代码 else 以上条件都为假

流程控制之if...elif...else和流程控制之while循环

一.流程控制之if...elif...else 1.如果:女人年龄大于28岁,那么:叫大姐姐,否则:叫小姐姐 old_grid=28 if old_grid > 28: print('大姐姐') else print('小姐姐') 2.如果:女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:gd,如果:表白成功,那么:在一起,如果不成功,那么:mmp old_grid=21 height=170 weight=99 is_prett

python入门之流程控制

python入门之流程控制 一.什么叫流程控制 所谓流程控制就是控制流程,具体指控制程序的执行流程,而执行流程分为三种结构:顺序结构(之前写的代码都是顺序结构),分支结构(用到if判断).循环结构(用where与for) 二.分支结构 2.1什么是分支结构 分支结构就是根据条件判断的真假去执行不同分支对应的子代码 2.2为什么要使用分支结构 程序中需要有相应的机制用来控制计算机具备人的判断能力 2.3如何使用分支结构 if 主要用来判断事物的对错,真假是否可行 如: 1.前面有一个小姐姐年龄在2

十七、流程控制之for循环

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _17.流程控制之for循环 {     class Program     {         static void Main(string[] args)         {             /**              * for循环语句              * 其语法:     

十五、流程控制之do循环

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _15.流程控制之do循环 {     class Program     {         static void Main(string[] args)         {             /**              * do...while循环语句              * 其语法

十六、流程控制之while循环

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _16.流程控制之while循环 {     class Program     {         static void Main(string[] args)         {             /**              * while循环语句              * 其语法:

Shell命令和流程控制

Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字操作的. 常用命令语法及功能 echo "some text": 将文字内容打印在屏幕上 ls: 文件列表 wc –l filewc -w filewc -c file: 计算文件行数 计算文件中的单词数 计算文件中的字符数 cp sourcefile destfile: 文件拷贝 mv

GO語言基礎教程:流程控制

在開始一個新的章節之前先來回顧上一篇文章的部份,首先我們來看這段代碼: package main import ( "fmt" ) func main(){ var x,y int=1,2 { var x int=2 { var x int=3 fmt.Println(x,y) //首先輸出3,2 如果我把這行輸出語句注解掉,大家猜猜會如何? } fmt.Println(x,y) //其次輸出2,2 } fmt.Println(x,y) //最後輸出1,2 } 執行結果我已經加到註釋內