1. 多分支 if 条件语句
if [ 条件判断式1 ]
then
当条件判断式1成立时,执行程序1
elif [ 条件判断式2 ]
then
当条件判断式2成立时,执行程序2 „
…省略更多条件 …
else
当所有条件都不成立时,最后执行此程序
fi
#此处省略编辑vim过程
[cfp@bogon ~]$ vim ./text/a.txt
#查看完整脚本内的完整代码
[cfp@bogon ~]$ cat ./text/a.txt
#!/bin/bash
#Author: Liang jie
read -p "Please input a number:" number
if [ $number -eq 10 ] #如果number=10
then
echo 'number=10'
exit 1
elif [ $number -le 22 -a $number -ge 10 ] #如果10<=number<=22
then
echo '10<=number<=22'
exit 2
elif [ $number -ge 33 ] #如果number>33
then
echo 'number>=33'
exit 3
else
echo NO
exit 4
fi
[cfp@bogon ~]$ ./text/a.txt
Please input a number:10
number=10
[cfp@bogon ~]$ echo $?
1
[cfp@bogon ~]$ ./text/a.txt
Please input a number:17
10<=number<=22
[cfp@bogon ~]$ echo $?
2
[cfp@bogon ~]$ ./text/a.txt
Please input a number:44
number>=33
[cfp@bogon ~]$ echo $?
3
[cfp@bogon ~]$ ./text/a.txt
Please input a number:3
NO
[cfp@bogon ~]$ echo $?
4
2.多分支 case条件语句
case语句和if…elif…else语句一样都是多分支条件语句,不过和 if 多分支条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关系。
case $变量名 in
“值1”)
如果变量的值等于值1,则执行程序1
;;
“值2”)
如果变量的值等于值2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
# 编辑一个脚本,编辑过程略
[cfp@bogon ~]$ vim ./text/b.txt
# 查看这个脚本的源代码
[cfp@bogon ~]$ cat ./text/b.txt
#!/bin/bash
#Author :Liang jie
read -p "Please choose yes/no: " -t 30 cho
case $cho in
"yes")
echo 'Your choose is yes!'
;;
"no")
echo 'Your choose is no!'
;;
*)
echo 'Your input is error!'
;;
esac
[cfp@bogon ~]$ chmod 755 ./text/b.txt
[cfp@bogon ~]$ ./text/b.txt
Please choose yes/no: yes
Your choose is yes!
[cfp@bogon ~]$ ./text/b.txt
Please choose yes/no: no
Your choose is no!
3. for循环
语法一:
for 变量 in 值1 值2 值3…
do
程序
done
in后面有几个值,for循环就执行几次。每次循环,将各个值分别赋给变量。然后执行程序。
实例1
# 创建一个 for.txt 文件
[cfp@bogon text]$ touch for.txt
# 编辑 for.txt 文件,编辑过程略
[cfp@bogon text]$ vim for.txt
# for.txt 文件 源代码如下:
[cfp@bogon text]$ cat for.txt
#!/bin/bash
#Auther:Liang jie
for i in morning noon afternoon night
do
echo "This time is $i"
done
[cfp@bogon text]$ bash for.txt
This time is morning
This time is noon
This time is afternoon
This time is night
实例2:
# 先创建一个for目录
[cfp@bogon ~]$ mkdir /tmp/for
[cfp@bogon ~]$ cd /tmp/for
# 在for目录下面加上几个文件
[cfp@bogon for]$ touch a.sh
[cfp@bogon for]$ touch b.sh
[cfp@bogon for]$ touch c.sh
[cfp@bogon for]$ touch d.sh
[cfp@bogon for]$ touch e.dr
[cfp@bogon for]$ touch a.txt
[cfp@bogon for]$ ls
a.sh a.txt b.sh c.sh d.sh e.dr
# 首先编辑一个脚本。编辑过程略
[cfp@bogon ~]$ vim ./text/d.txt
# 脚本的完整代码如下
[cfp@bogon ~]$ cat ./text/d.txt
#!/bin/bash
#查看/tmp/for目录中有几个文件的文件名是以.sh结尾的
#Auther : liang jie
cd /tmp/for
ls *.sh > ls.log
y=1
for i in $(cat ls.log)
do
echo $y
y=$(($y+1))
done
#运行 ./text/d.txt脚本
[cfp@bogon ~]$ bash ./text/d.txt
1
2
3
4
#/tmp/for 目录下一共有四个 .sh 文件,与事实相符
语法二:
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
双小括号才可以进行加减乘除运算
实例1:
[cfp@bogon text]$ vim for.txt
# 编辑 for.txt过程略,下面是查看for.txt源码
[cfp@bogon text]$ cat for.txt
#!/bin/bash
#从1加到100
#Auther:Liang jie
s=0
for ((i=1;i<=100;i=i+1))
do
s=$(($s+$i))
done
echo "The sum of 1+2+...+100 is : $s"
[cfp@bogon text]$ bash for.txt
The sum of 1+2+...+100 is : 5050
4.while循环和until循环
while循环是不定循环,也称作条件循环 。只要条件判断式成立,循环就会一直继续,直到条件判断式不成立,循环才会停止。这就和for的固定循环不太一样了。
while [ 条件判断式 ]
do
程序
done
[cfp@bogon text]$ vim for.txt
[cfp@bogon text]$ cat for.txt
#!/bin/bash
#从1加到100
#Auther:Liang jie
i=1
s=0
while [ $i -le 100 ]
do
s=$(($s+$i))
i=$(($i+1))
done
echo "The sum of 1+2+...+100 is : $s"
[cfp@bogon text]$ bash for.txt
The sum of 1+2+...+100 is : 5050
until循环
until循环,和while循环相反,until循环时只要条件判断式不成立则进行循环,并执行循环程序。一旦循环条件成立,则终止循环。
until [ 条件判断式 ]
do
程序
done
[cfp@bogon text]$ vim for.txt
[cfp@bogon text]$ cat for.txt
#!/bin/bash
#从1加到100
#Auther:Liang jie
i=1
s=0
until [ $i -gt 100 ]
do
s=$(($s+$i))
i=$(($i+1))
done
echo "The sum of 1+2+...+100 is : $s"
[cfp@bogon text]$ bash for.txt
The sum of 1+2+...+100 is : 5050
5. 总结
文章总结了几种常见的流程控制语句。如果你有编程语言基础的话,这些应该是很简单的。如果没有编程基础,也不会太难,就是几种常见的格式,熟悉了就可以。