linux系列(九):shell流程控制之选择结构:if/elif/else、case

5 流程控制

5.1 条件判断

#条件判断1:test 条件表达式  #注意比较运算符前后必须有空格
[root@java37master ~]# test 1 -gt 2; 
# $? 获取上一个语句的结果
[root@java37master ~]# echo $?;
1

#条件判断1:[ 条件表达式 ]   :注意[]两边必须有空格
[root@java37master ~]# [ 1 -lt 2 ];
[root@java37master ~]# echo $?;
0

[root@java40master ~]# [ 2 -ge 3 -o 1 -gt 0 ];
[root@java40master ~]# echo $?;
0

5.2 选择结构之if

  • 单分支
格式:
if 条件判断 ; then
    statement;
fi;
[root@java37master ~]# if [ $sex="男" ];then
> echo "sex="$sex",帅哥!";
> fi;
sex=男,帅哥!


[root@java37master ~]# if test $sex="男"; then
> echo "sex="$sex",帅哥!";
> fi;
sex=男,帅哥!

[root@java40master ~]# touch 4.sh
[root@java40master ~]#  vim 4.sh
read -p "请输入一个整数:" i;
if [ $i -lt 0 ];then
     echo $i小于0;
fi;
if [ $i -eq  0 ];then
     echo $i deng yu 0 ;
fi;
if [ $i -gt 0 ];then
     echo $i dayu 0;
fi;
date;
[root@java40master ~]#  chmod 777 4.sh
[root@java40master ~]#  ./4.sh
  • 双分支
双分支格式:
if 条件判断; then
    statement1
else
   statement2
fi;
# 测试if 双分支
sex1="女";
if test $sex1 = "男";then
    echo "sex1==="$sex1"称呼是帅哥!";
else
    echo "sex1="$sex1"称呼是美女!";
fi;	
# 判断一个年是不是闰年
read -p "请输入一个年:" n;
if [ $((n % 4)) -eq 0 -a $((n % 100)) -ne 0 -o $((n % 400)) -eq 0 ] ; then
     echo $n"年是闰年";
else 
     echo $n"年不是闰年";
fi;
  • 多分支
多分支格式:
if 条件判断1; then
    statement1
elif 条件判断2; then
   statement2
elif 条件判断3; then
   statement3
elif 条件判断4; then
   statement4
else
   statement5
fi;
# 根据分数判断等级
score=67;# 注意所有数字运算符 只适用于整数类型
if [ $score -lt 60 ];then
    echo "score="$score",等级是不及格!";
elif [ $score -lt 70 ];then
    echo "score="$score",等级是及格!";
elif [ $score -lt 80 ];then
    echo "score="$score",等级是良好!";
else
    echo "score="$score",等级是优秀!";
fi;

5.3 选择结构之case

  • case格式
case格式:
case 变量 in
      值1)
              statement1;
              statement2;;
      值2)
               statement1;
               statement2;;
      值3)                        #值3)   类似于case 值3:
               statement1;
               statement2;;      #;;  类似于break
      *)                         # *) 类似于default
               statement1;
               statement2;;
esac; 
jiJie="春";
case $jiJie in 
     "春")
	        echo $jiJie"季对应的月份是3 4 5";;
	 "夏")
	        echo $jiJie"季对应的月份是6 7 8 ";;
	 "秋")
			echo $jiJie"季对应的月份是9 10 11";;
	  "冬")
			echo $jiJie"季对应的月份是12 1 2";;			
	  *)
            echo $jiJie"季节值错误!";;	
esac;
  • 案例1
# 判断一个数是不是水仙花
read  -p "请输入一个三位数:" n;
# 判断是不是三位数:
if [ $n -ge 100 -a $n -le 999 ];then
    echo $n"是三位数!";
	#获取各个位数的值
	n1=$((n % 10));
	n2=$((n / 10 % 10));
	n3=$((n /100));
	echo $n1":"$n2":"$n3;
	sumn=$((n1*n1*n1+n2*n2*n2+n3*n3*n3));
	if [ $sumn -eq $n ];then
	   echo $n"是三位数!是水仙花数!";
	else
	   echo $n"是三位数!不是水仙花数!";
	fi;
else
    echo $n"不是三位数!";
fi;
  • 案例2
#练习case: 打印输出中文星期:1
n=3;
case $n in 
     1)
	     echo $n":星期一!";;  
     2)
	     echo $n":星期二!";; 
     3)
	     echo $n":星期三!";; 
	 4)
	     echo $n":星期四!";; 
	 5)
	     echo $n":星期五!";; 
	 6)
	     echo $n":星期六!";; 
	 7)
	     echo $n":星期日!";; 
	 *)
         echo $n":星期啥也不是!";; 	 
esac;
  • 案例3 根据性别判断称呼:
echo "------根绝性别和年龄判断称呼---------";
read -p "请属于年龄:" nl;
read -p "请属于性别:" xb;
if test $nl -lt 18 -a $xb = '男'; then
     echo "性别:"$xb",年龄:"$nl"称呼是:小男孩";
elif test $nl -lt 35 -a $xb = '男'; then
     echo "性别:"$xb",年龄:"$nl"称呼是:帅哥";
elif test $nl -lt 60 -a $xb = '男'; then
     echo "性别:"$xb",年龄:"$nl"称呼是:叔叔";
elif test $xb = '男'; then
     echo "性别:"$xb",年龄:"$nl"称呼是:爷爷";
elif test $nl -lt 18 ; then
     echo "性别:"$xb",年龄:"$nl"称呼是:小女孩";
elif test $nl -lt 35 ; then
     echo "性别:"$xb",年龄:"$nl"称呼是:美女";
elif test $nl -lt 60 ; then
     echo "性别:"$xb",年龄:"$nl"称呼是:阿姨";
else
     echo "性别:"$xb",年龄:"$nl"称呼是:奶奶";
fi; 	

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值