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
执行结果