zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    杭电2054
    M1/M2总结
    软件开发相关的读书笔记 问题与方法
    代码复审1234跟我一起来
    电梯调度算法简述
    Pair_Work Project
    读书笔记摘录:
    Individual Project
    个人阅读作业——软件工程M1/M2的总结
    个人阅读作业2
  • 原文地址:https://www.cnblogs.com/52php/p/5669938.html
Copyright © 2011-2022 走看看