Shell流程控制

if else 语句 如果没有判断条件不要写,比如else后面不需要执行任何命令,在其他语言例如java、php中不写不会报错,但是shell中不允许 单分支

if 条件
then
 执行代码
fi

可以写做一行只要每个语句后面加上分号“ ; ”就可以,如下

if 条件;then 执行代码;fi

双分支

if 条件
then
 执行代码
else 
 执行代码
fi

多分支

if 条件
then
 执行代码
elif 条件2
then
 执行代码
else
 执行代码
fi

例子:判断两个变量是否相等

a=1
b=2
if [ $a == $b ]
then
 echo "a 等于 b"
elif [ $a -gt $b ]
then 
 echo "a 大于 b"
elif [ $a -lt $b ]
then
 echo "a 小于 b"
else
 echo "没有符合的条件"
fi

输出结果:
a 小于 b

case语句

case 变量引用 in
条件1)
 分支1
 ;;
条件2)
 分支2
 ;;
esac

例子:

echo 请输入1,2,3任一数字:
echo 您输入的数字为:
read num
case $num in
  1) echo 您输入了1
  ;;
  2) echo 您输入了2
  ;;
  3) echo 您输入了3
  ;;
  *) echo 请输入1,2,3中的任一数字
  ;;
esac

for循环

#第一种格式
for i in 1 2 3 4 5
do
  echo "第一种格式:$i"
done

#第二种格式
for((i=1;i<=5;i++))
do
 echo "第二种格式:$i"
done

执行结果:

第一种格式:1
第一种格式:2
第一种格式:3
第一种格式:4
第一种格式:5
第二种格式:1
第二种格式:2
第二种格式:3
第二种格式:4
第二种格式:5

while语句

var=1
while(($var<=5))
do
 echo $var
 let var++
done

执行结果:

1
2
3
4
5

无限循环

#第一种
while :
do
 执行代码
done

#第二种
while true
do
 执行代码
done

#第三种
for((;;))
do
 执行代码
done

until循环 循环判断直到条件满足时停止,与while类似

a=0
echo "以下为until执行结果"
until [ ! $a -lt 5 ]
do
 echo $a
 a=`expr $a + 1`
done

#下面用while方式的代码和until执行结果完全相同
echo "以下为while执行结果"
b=0
while(($b<5))
do
 echo $b
 b=`expr $b + 1`
done

执行结果:

以下为until执行结果
0
1
2
3
4
以下为while执行结果
0
1
2
3
4

循环控制break和continue break退出循环 continue继续当前轮的循环