程序的运行除了顺序运行外,还可以通过控制语句来改变执行顺序。本文介绍bash的控制语句用法。
一、条件语句
Bash 中的条件语句让我们可以决定一个操作是否被执行。结果取决于一个包在[[ ]]里的表达式。
bash中的检测命令由[[]]包起来,用于检测一个条件的结果。有两个不同的条件表达式:if和case。
1.1 if语句
if 语句的语法形式如下
x=10
y=30
if [[ ${x} > ${y} ]]
then
echo "${x} > ${y}"
elif [[ ${x} < ${y} ]]; then
echo "${x} < ${y}"
else
echo "${x} = ${y}"
fi
1.2 case 语句
对不同情况,需要采取不同措施,可以使用case语句。
模式的内容要用双引号括起来,可用|分割多个模式,以)来结束一个模式序列。第一个匹配上的模式对应的命令将会被执行。执行语句结尾使用两个连续的分号(;;)结束。*代表任何不匹配以上模式的模式。
number=first
case $number in
"one" | "first")
echo "number is one"
;;
*)
echo "number is $number"
;;
esac
二、循环语句
循环可以不断地执行某个程序段,直到使用者设置的条件达成为止。
bash中存在四种循环:for, while, until和select。本文重点讲解for循环和while循环。
2.1 for循环
for这种语法,为固定循环次数。for 循环有如下两个语法形式
打印列表内容
for animal in dog cat elephant
do
echo "there are ${animal}s"
done
计算1-9的和
sum=0
for (( i = 0; i < 10; i++ ))
do
sum=`expr $sum + $i`
done
echo $sum
2.2 while循环
while循环为不定循环。while循环检测一个条件,只要这个条件为 真,就执行一段命令。直到条件为false。
while [[ condition ]]
do
程序段落
done
2.3 循环控制命令:break和continue
如要提前结束一个循环或跳过某次循环执行,可以使用 break和continue语句来实现。它们可以在任何循环中使用。
break语句用来提前结束当前循环。
continue语句用来跳过某次迭代。