1. 定义
   
关键字:遍历
    
    
    2. 语法
   
    
     语法一:
    
   
for var in list
do
	commands
done
    
     语法二:
    
   
for var in list;do
	commands
done
    
     语法三(C语言风格):
    
   
for ((i=0;i<10;i++))
do
	commands
done
    注:取值列表有多种取值方式,比如:
    
    1)可以直接读取in后面的值,默认以空格分隔
    
    2)列表中的复杂值,可以使用 引号或转义符号”/”加以约束
   
    
    
    3. 执行流程描述
   
    
    
    各个被遍历的值之间用空格分开
   
    
    
    4. 示例
   
    
    
    
     4.1 读取in后面的值,默认以空格分隔
    
   
    
     代码示例
    
   
#!/bin/bash
for var in a1 b1 c1 d1
do
	echo "this is $var"
done
或
#!/bin/bash
for var in a1 b1 c1 d1;do
	echo "this is $var"
done
    
     执行结果
    
    
    
   
    
    
    
     4.2 读取in后面值,使用 引号加以约束
    
   
    
     代码示例
    
   
#!/bin/bash
for var in a1 a2 "c1 d1" e2 "hello world"
do
	echo "this is $var"
done
    
     执行结果
    
    
    
   
    
    
    
     4.3 读取in后面的值,特殊符号使用转义符”/”加以约束
    
   
    
     代码示例
    
   
#!/bin/bash
for var in a1 b\'1 'c1 d1' e2 'hello world' it\'s a22
do
	echo "this is $var"
done
    
     执行结果
    
    
    
   
    
    
    
     4.4 从变量中取值
    
   
即提前定义列表变量
    
     代码示例
    
   
#!/bin/bash
lst="a1 b1 c1 d1"
for var in $lst
do
	echo "this is $var"
done
    
     执行结果
    
    
    
   
    
    
    
     4.5 从命令中取值
    
   
    
     代码示例
    
   
#!/bin/bash
for i in `cat ./test.txt`
do
	echo $i
done
    
     执行结果
    
    
    
    
    由上述结果可以看出,输出结构是以
    
     空格
    
    为默认分隔符的,那么如何自定义分隔符呢?
   
    
    
    
     4.6 自定义shell分隔符
    
   
    默认情况下,bash shell 会以空格、制表符、换行符作为分隔符。通过
    
     IFS
    
    来自定义为分隔符
    
    
     指定单个字符做分隔符:
    
    
    
     IFS=:
    
    # 以
    
     :
    
    冒号作为分隔符
    
    
     指定多个字符做分隔符:
    
    
    
     IFS='\n':;'
    
    #定义
    
     反斜杠
    
    、
    
     n
    
    、
    
     冒号
    
    、
    
     分号
    
    和
    
     双引号
    
    作为字段分隔符
   
    
     注: $’\n’ 和’\n’ 的区别
    
   
    
     IFS='\n'
    
    # 将字符 \ 和字符 n 作为IFS的换行符
    
    
     IFS=$'\n'
    
    # 将真正的换行符作为字段分隔符
   
    
     代码示例
    
   
#!/bin/bash
IFS=$'\n'
for i in `cat ./test.txt`
do
	echo $i
done
    
     执行结果
    
    
    
    
    由上面执行结果可以看出,目前是以换行符作为了分隔符
   
    
    
    
     4.7 C语言风格的for
    
   
    
    
    
     1) 示例一
    
   
    
     代码示例
    
   
#!/bin/bash
for ((i=0;i<10;i++))
do
	echo "num is $i"
done
    
     执行结果
    
    
    
   
    
    
    
     示例二
    
   
    多个变量,同时输出1-9的升序和降序
    
    
     代码示例
    
   
#!/bin/bash
for ((a=1,b=9;a<10;a++,b--))
do
	echo "num is $a -- $b"
done
    
     执行结果