前言
bash shell中循环语句的写法有:for-in、for-i、while、until;
循环中断控制符有:break、continue
循环语句示例
for-in
#! /bin/bash
for num in 1 22 14 55
do
echo $num
done
echo "1 2 3 4 5 loop output"
for num in `seq 5`
do
echo $num
done
echo "charactor string"
for str in hello world "hello, world"
do
echo $str
done
执行结果:
p.s. :for-in适合遍历数组,注意数组字面量的话,不需要括号,以空格分隔,如果是字符串的,做为单独的一个值,中间有空格,注意用引号括起来。
for-i
其它语言,诸如c/java中for(i=0;;)之类 的循环,语法上稍有不同,示例如下:
#! /bin/bash
for ((i=0; i<3; i++))
do
echo $i
done
执行结果:
while
while循环语句的终止表达式可以使用逻辑表达式:bash shell基本语法之逻辑表达式
#! /bin/bash
#遍历当前目录,找到while.sh文件则结束遍历或全部遍历完毕,最后输出当前目录下的所有文件
files=(`ls`)
index=0
file="null"
while [[ -n $file && $file != "while.sh" ]]
do
file=${files[$index]}
echo $file
let index++
done
echo "all file: ${files[*]}"
执行结果:
p.s. 其它while很简单,格式就是:
while expression
do
....
done
until
while的循环条件是:当满足这个条件时,一直循环直到不满足条件结束或跳出循环,而until是刚好相反,当不满足这个条件时,一直循环,直到满足这个条件:
#! /bin/bash
i=0
until [ $i -gt 5 ]
do
echo $i
let i++
done
执行结果:
循环中断控制
和c语言语义上一样,break用于跳出当前循环,continue开始下轮循环,也就是说,continue后面的命令不再执行。
#! /bin/bash
for i in `seq 10`
do
echo "$i"
# 如果i == 3,跳出循环
[[ $i -eq 3 ]] && echo "i=3,break" && break
done
echo "循环结束,i的值是$i"
for i in `seq 5`
do
# 如果 i == 2,不打印
[[ $i -eq 2 ]] && echo "i=2, do not print" && continue
echo "$i"
done
执行结果: