shell 控制流可以概括为 分支控制和循环控制。
一、 分支控制
分支控制有两种形式, 一是if, then, else, 二是 case, in.
1. if...then...else
语法:
if 条件1
then
命令列表1
elif 条件2
then
命令列表2
else
命令列表3
fi
这里的条件可以是...中所述的条件测试,也可以是执行一条命令,此时使用命令执行结果作为条件
2. case...in
该类型分支控制是一种模式匹配,也可以用于值匹配
语法:
case 值 in
模式1 )
命令列表1
break
;;
模式2 )
命令列表2
break
;;
* )
命令列表3
break
;;
esac
模式中的元字符:
* : 任意字符
? : 任意单个字符
[..] : 字符集
注意,这里是模式匹配,不是字符串,因此模式不要加引号
举例:
echo -n "Do you want to continue? [y..n]"
read ANSWER
case $ANSWER in
y|Y|yes|Yes)
echo "you selected yes"
break
;;
n|N|no|No)
echo "you selected no"
break
;;
*)
echo "unknown selection"
break
;;
esac
二、循环控制
循环控制有 for, until, while 三种循环控制
1. for 循环控制
一般格式:
for 变量 in 取值列表
do
命令列表1
done
如果不带in列表,默认从命令行参数中取值
2. until 循环控制
用于执行直到满足条件才停止循环的场合
一般格式:
until 条件
do
命令列表
done
3. while 循环控制
while 与until恰好相反,当条件为真时,一直执行循环
在case分支控制,和循环控制中还可以使用 break, continue 改变控制
阅读(2301) | 评论(0) | 转发(0) |