条件判断语句下篇)

宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述条件判断语句下篇)相关的知识,希望能为你提供帮助。
多条件判断语句

  • ?简介?
?shel除了通过 if elif来处理多分支的情况外,还可以通过case语句来处理多分支,使用case语句可以使程序更加的有条理性?
  • ?case的基本语法?

?语法分析:?
?variable 是一个变量,case语句会将该变量的值与value1~valuen中的每个值相比较,如果与某个值相等,则执行该value所对应的一组语句。当遇到“; ; ”时候就跳出case语句,?
?执行esac语句后面的语句。如果没有任何一个值与variable的值相匹配,则执行*后面的一组语句?


?特别注意:?
?1.变量名variable,可以使用双引号,也可以不使用?
?2.每个case子句中的条件测试部分,都以 ")"号结束?
?3.每个case子句都以一对“; ; ”号结束,当遇到一对分号时,会跳过当前case子句后面的所有case子句,包括*所对应的子句,执行esac子句后面的其他语句?
?4.case语句结构以esac结尾,这与if相似?


  • ?案例1(利用case语句处理选项参数)?
管理java服务的一个脚本
?case "$1" in?
?  start)?
?      echo "starting java"?
?      java -jar springboot.jar?
?      ; ; ?
?  stop)?
?      echo "stoping java"?
?      java_pid=`ps -ef|grep springboot.jar|grep -v grep|awk print $2`?
?      kill -15 java_pid?
?      ; ; ?
?  restart)?
?      $0 stop?
?      $0 start?
?      ; ; ?
?  *)?
?    echo "Usage: $0 start|stop|restart"?
?    exit 1?
?esac?
?分析: 第一行通过系统变量$1接收用户输入的参数,参数可以接收3个值,start|stop|restart,执行*对应的子句,则提示用户使用方法?
  • ?案例2(利用case语句处理用户输入)?
?#!/bin/bash?
?#输出提示信息?
?echo "hit a key,then hit return"?
?#读取用户按下的键?
?read keypress?
?#case 语句开始?


?case "$keypress" in?
?  #小写字母?
?  [[:lower:]])?
?    echo "Lowercse letter."?
?    ; ; ?
?  #大写字母?
?  [[:upper:]])?
?    echo "Uppercase letter."?
?    ; ; ?
?  #单个数字?
?  [0-9])?
?    echo "Digit"?
?    ; ; ?
?  #其他字符?
?  *)?
?    echo "other letter."?
?    ; ; ?
?esac?
结果:



运算符
  • ?算术运算符?
?算术运算符分类:?
运算符
说明
举例
+
求两个数的和
例如 1+5是求1和5的和
-
求两个数的差
例如 9-1是求9和1的差
*
求两个数的乘积
例如 1*5是求1和5的积
/
求两个数的商
例如 25/5是求25和5的商
%
求两个数的余
例如 23/4是求23和4的余数,余数为3
**
幂运算
例如 3**3是求3的3次方为27
?进行算术运算的命令?
  1. ?expr?
语法:
expr expression
expression是要计算的表达式
案例:
?#!/bin/bash?
?#计算2和100的差?
?result=`expr 2 - 100`?
?echo "$result"?
?#计算2和100的和?
?result=`expr 2 + 100`?
?echo "$result"?
?#计算2和100的乘积?
?result=`expr 2 \\* 100`?
?echo "$result"?
?#计算2和100的商?
?result=`expr 24 / 3`?
?echo "$result"?
?#先计算 2与6的差,然后再乘以12,即-48?
?result=`expr \\( 2 - 6 \\) \\* 12`?
?echo "$result"?
?#错误的语法?
?result=`expr 2+5`?
?echo "$result"?
?#错误的语法?
?result=`expr 2-4*9`?
?echo "$result"?
?#错误的语法?
?result=`expr 1-(4-7)`?
?echo "$result"?
分析:  用反引号将expr和表达式括起来,一定要注意运算符左右两边的空格,否则会得出错误的结果,另外expr不支持幂运算
?2.使用$(())?
使用这种方法进行算术运算写法比较自由,无需对运算符和括号做转义处理,可以用松散或者紧凑的格式来书写
?案例:?
?#!/bin/bash?
?#紧凑格式?
?result=$((2+3))?
?echo "$result"?
?#松散格式?
?result=$(( 2 + 3 ))?
?echo "$result"?
?#计算3和6的乘积?
?result=$(( 3 * 6 ))?
?echo "$result"?
?#计算7和5的商?
?result=$(( 7 / 5 ))?
?echo "$result"?
?#计算8和3的余数?
?result=$(( 8 % 3 ))?
?echo "$result"?
?#复合运算?
?result=$(( ( 1-4 ) * 5 ))?
?echo "$result"?
3.使用 $[..]
使用方括号同样可以执行算术运算,这种语法的特点与使用两个圆括号相同,无论是采用紧凑格式还是松散格式,都可以得到正确的结果,另外,算术表达式中的星号和圆括号也无需转义处理
?案例:?
?#!/bin/bash?
?#加法运算?
?result=$[4+5]?
?echo "$result"?
?#复合运算?
?result=$[(1+2)*3]?
?echo "$result"?
?#幂运算?
?result=$[2 ** 4]?
?echo "$result"?
?结果:?

4.使用let命令
使用let命令可以执行一个或多个表达式,其中的变量名无需使用$符号,如果表达式中含有空格或者其他特殊字符,则必须将其引用起来
?案例:?
【条件判断语句下篇)】?#!/bin/bash?
?#定义变量?
?n=10?
?#加法运算?
?let n=n+1?
?echo "$n"?
?#乘法运算?
?let n=n*10?
?echo "$n"?
?#幂运算?
?let n=n**1?
?echo "$n"?
?结果:?



复合算术运算符
运算符
说明
举例
+=
将左边的数加上右边的数,然后再将和赋给左边的变量
例如 3+=5 等于8
-=
将左边的数减去右边的数,然后再将差赋给左边的变量
例如 5 -=2 等于3
*=
将左边的数乘以右边的数,然后再将积赋给左边的变量
例如 2 *= 8 等于16
%=
将左边的数对右边的数求模之后,再赋给左边的变量
例如 5 %=2 等于1
/=
将左边的数除以右边的数,然后再将商赋给左边的变量
例如 5 /=2 等于2
自增/自减运算符
?简介
??这类运算符一共有4种,分别是前置自增,前置自减,后置自增,后置自减?
运算符
说明
++variable
先将variable的值加1,然后再赋给variable
--variable
先将variable的值减1,然后再赋给variable
variable++
先使用variable的值,然后再将该变量的值加1
variable--
先使用variable的值,然后再将该变量的值减1
?分析: 前置运算符都是先执行运算,然后再使用表达式的值;后置运算符则是先使用表达式的值,然后再执行自增或者自减运算?
?案例:?

?结果:?

?注意:
??无论是自增还是自减,都是针对变量而言的,不要对常量或者表达式执行自增或者自减运算。?



    推荐阅读