一、for语句
for循环语句有两种格式,分别如下:
(一)for in语句
for var in list
do
commands
done
list代表要循环的值,在每次循环的时候,会把当前的值赋值给var(变量名而已,随意定), 这样在循环体中就可以直接通过$var获取当前值了。list里面的值默认以空格分割,可以通过环境变量IFS控制
实例1:
1 #!/bin/bash
2
3 for i in 1 2 3 4 5
4 do
5 echo $i
6 done
输出结果:
exbot@ubuntu:~/liyijun$ source for.sh
1
2
3
4
5
实例2:
1 #!/bin/bash
2 list="a b c d"
3 for str in $list
4 do
5 echo $str
6 done
输出结果;
exbot@ubuntu:~/liyijun$ source for.sh
a
b
c
d
(2)C语言风格的for循环
1 #!/bin/bash
2
3 for(( i=0;i<11;i++ ))
4 do
5 echo $i
6 done
输出结果:
exbot@ubuntu:~/liyijun$ source for.sh
0
1
2
3
4
5
6
7
8
9
10
二、while语句
其基本格式如下:
while command
do
commands
done
可以看出来其判断依然是一个命令执行之后的返回状态,这一点跟if控制语句一样,所以理所当然,也会有test、双括号等。
实例1:
1 #!/bin/bash
2
3 i=0
4 while (( $i<5 ))
5 do
6 # i=$[$i+1]
7 (( i++ ))
8 echo $i
9 done
这个地方处理类似于c语言的i++有好多种方法,可以参考下面的博客:
https://blog.csdn.net/agent_007/article/details/52265819?locationNum=2&fps=1
三、使用break和continue来控制循环
(一)、break的两种用法
- break 用来跳出最近的循环
- break n n是一个整数,代表跳出当前循环的外层的第几层循环
实例1:
1 #!/bin/bash
2
3 for(( i=0;i<11;i++ ))
4 do
5 if (( i==5 ))
6 then
7 break
8 fi
9 echo $i
10 done
输出结果:
exbot@ubuntu:~/liyijun$ source for.sh
0
1
2
3
4
实例2:
#!/bin/bash
j=0
while (( j<5 ))
do
(( j++ ))
echo "j = $j"
for(( i=0;i<2;i++ ))
do
if (( j==3 ))
then
break 2
fi
echo "i = $i"
done
done
输出结果;
j = 1
i = 0
i = 1
j = 2
i = 0
i = 1
j = 3
(二)、coutinue
continue表示终止当前的一次循环,进入下一次循环,注意,continue后面的语句不会执行。其用法和break类似,不再赘述。
REF: