一、循环控制语句:break continue
break语句是退出循环。
continue语句是退出本次循环,可以继续下一次循环。
break 退出码语句是退出程序
二、嵌套循环
面试题1:打印99乘法表
[root@manager day5]# cat 99.sh
#!/bin/bash
#*************************************************************
#Author: pyy
#Date: 2020-06-22
#FileName: 99.sh
#*************************************************************
#打印99乘法表
for i in `seq 9`
#for ((i=1;i<=9;i++))
do
for j in `seq 9`
#for ((j=1;j<=9;j++))
do
if [ $j -le $i ]
then
sum=$(($i*$j|bc))
echo -n "$i * $j = $sum "
fi
done
echo " "
done
[root@manager day5]# sh 99.sh
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
面试题2:有1 2 3 4四位数,任意组合有多少种互不相同且无重复的三位数字,分别是什么?
解析:一共有4*3*2=24种组合。因为是三位数,所以是三次循环;因为是四个数字,所以每次循环循环四次,并且最后要判断三个数都不相同
[root@manager day5]# cat threenum.sh
#!/bin/bash
#*************************************************************
#Author: pyy
#Date: 2020-06-22
#FileName: threenum.sh
#*************************************************************
#有1 2 3 4四位数,任意组合有多少种互不相同且无重复的三位数字,分别是什么?
for x in `seq 4`
do
for y in `seq 4`
do
for z in `seq 4`
do
[ $x -ne $y -a $x -ne $z -a $y -ne $z ] && echo $x$y$z
done
done
done
[root@manager day5]# sh threenum.sh
123
124
125
132
134
135
142
143
145
213
214
215
231
234
235
241
243
245
312
314
315
321
324
325
341
342
345
412
413
415
421
423
425
431
432
435
面试题3:打印三角形
[root@manager day5]# cat printsan.sh
#!/bin/bash
#*************************************************************
#Author: pyy
#Date: 2020-06-22
#FileName: printsan.sh
#*************************************************************
#*
#**
#***
#****
#*****
read -p "请输入" num
for ((i=1;i<=num;i++))
do
for ((j=1;j<=i;j++))
do
echo -n "*"
done
echo " "
done
# *
# ***
# *****
# *******
# *********
for ((i=1;i<=num;i++))
do
for ((j=1;j<=num-i;j++))
do
echo -n " "
done
for ((k=1;k<=2*i-1;k++))
do
echo -n "*"
done
echo " "
done
[root@manager day5]# sh printsan.sh
请输入5
*
**
***
****
*****
*
***
*****
*******
*********
面试题4:判断闰年: ①该年份能被 4 整除同时不能被 100 整除;② 该年份能被400整除。
[root@manager day5]# cat ifrun.sh
#!/bin/bash
#*************************************************************
#Author: pyy
#Date: 2020-06-22
#FileName: ifrun.sh
#*************************************************************
#判断闰年
while true
do
read -p "请输入年份:" year
if [[ "$year" =~ ^[0-9]+$ ]]
then
if [ $[year%4] -eq 0 -a $[year%100] -ne 0 ]
then
echo "$year is run nian"
elif [ $[year%400] -eq 0 ]
then
echo "$year is run nian"
else
echo "$year not is run nian"
fi
break
else
echo "请输入的数字非法,请重新输"
fi
done
[root@manager day5]# sh ifrun.sh
请输入年份:ds
请输入的数字非法,请重新输
请输入年份:de
请输入的数字非法,请重新输
请输入年份:22
22 not is run nian
死循环常用true 或 :