shell 中的循环

来源:互联网 发布:杜汶泽现状2017 知乎 编辑:程序博客网 时间:2024/06/01 20:15

1. for 循环

(1).  for 循环 读取数据的来源

  • 读取列表中的值

 for i in cao shu ming don\'t known;do echo $i;donecaoshumingdon'tknown

  •   从变量中获取

list="cao shu ming don\'t known"for i in $list;do echo $i;donecaoshumingdon\'tknown

  •   从命令中读取

 cat tshuming  caoan liulin wang        zhaoshufor i in `cat t`;do echo $i;doneshumingcaoanliulinwangzhaoshu

  •   从通配符中读取

for i in `ls /etc/cron.d/*`;do echo $i;done/etc/cron.d/arbitrator/etc/cron.d/opsc/etc/cron.d/sysstat

(2).  for 循环 列表中的字段分隔符

      for 循环默认的字段分隔符有三个:

  •   空格
  • 制表符
  • 换行符  

      也就是说在list中的三个中任何一个都可以会作为for的一个字段分隔符;就会把字段认为是一个分开;

所以在cat file 时要注意,并非是按照行来分的;

    可以用IFS 变量来设置字段分隔符:

IFS.OLD=$IFSIFS=$'\n'     #只有换行符是for的字段分隔符;换行符必须这样写,否则无效IFS=":"       $冒号是for的字段分隔符IFS=$

(3). for C 模式

for((i=0;i<10;i++))do commadndone

2. while 命令

 读取文件: while的重要应用就是按照行来读取文件

while read line;do    echo $linedone < tshuming  caoan liulin wang        zhaoshu

3. until 循环

只有但判断条件返回是0时才退出循环

n=5;until [ $n -eq 0 ];do echo $n; n=`expr $n - 1`;done54321

4. 控制循环

循环一旦执行,除非触发了停止的条件否则会一直执行下线;这时我们需要处理一些特殊的情况;

用continue + break跳出循环。