shell编程中 if 条件语句,case条件语句

目录

一、条件测试

1.文件测试

1.1常见的测试操作符

1.2示例:

 2.整数值比较

2.1常用测试操作符

2.2示例

3.逻辑测试

二、if语句 

1.单分支结构

1.1格式

1.2单分支流程 

 2.双分支结构

2.1格式

2.2双分支流程 

2.3实验

3.多分支结构

3.1格式

3.2多分支流程 

3.3实验

三、case语句

1.格式

2.case多分支流程

3.实验


一、条件测试

测试表达式是否成立,若成立返回0,否则返回其他数值。

格式:

1        test   条件表达式

2        [   条件表达式   ] 

1.文件测试

 [  操作符  文件或目录 ]

1.1常见的测试操作符: 

-d测试是否为目录
-e测试目录或文件是否存在
-f测试是否为文件
-r测试当前用户是否有权限读取
-w测试当前用户是否有权限写入
-x测试当前用户是否有权限执行

1.2示例:

 2.整数值比较

[  整数1  操作符  整数2  ]

2.1常用测试操作符

操作符1操作符2作用
-eq==等于(Equal)
-ne!=不等于(Greater Than)
-gt>大于(Greater Than)
-lt<小于(Lesser Than)
-le<=小于等于(Lesser or Equal)
-ge>=大于等于(Greater or Equal)

 操作符1只能用于比较整数;操作符2可以用于比较字符串。

2.2示例

3.逻辑测试

格式1:[  表达式1  ]   操作符   [  表达式2  ]

格式2:命令1   操作符   命令2

常用的测试操作符: 

  • -a 或 && :逻辑与,“而且”的意思,表示前后条件都需成立。
  • -o 或 || :逻辑或,“或”的意思,表示前后条件只需成立一条。
  • !:逻辑否

 例:

[   $a  -ne   1 ]   &&   [   $a   !=    2  ]   

[    $a   -ne   1    -a     $a    !=    2   ]

[ [   $a  -ne   1  &&      $a   !=    2  ]  ]

上面三种语法起到作用相同,&&   和   ||   操作符使用时用双中括号。

二、if语句 

1.单分支结构

1.1格式

if   条件测试操作
 then  命令序列
fi

1.2单分支流程 

 2.双分支结构

2.1格式

if   条件测试操作
 then
   命令序列1
 else
   命令序列2
fi

2.2双分支流程 

 

2.3实验

判断输入的值是否为整数。 

vim zhengshu.sh
read -p "输入值:" num
if [ $num -eq $num ] &> /dev/null
then
  echo "整数"
else
  echo "非整数"
fi

sh zhengshu.sh

3.多分支结构

3.1格式

if   条件测试操作1
then
  elif  条件操作测试2
   then
      命令序列1
   else
      命令序列2
else 
  命令序列3
fi

3.2多分支流程 

3.3实验

提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组.

read -p "请输入100米赛跑的秒数:" second
if [ $second -eq $second ] &> /dev/null
then
  if [ $second -gt 0 -a $second -le 10 ] &> /dev/null
  then
    read -p "性别:" sex
    if [[ "$sex" == "男" ]]
     then
      echo "恭喜您进入男生组!"
    elif [[ "$sex" == "女" ]]
     then
      echo "恭喜您进入女生组!"
     else
      echo "输入错误,请重新输入。"
    fi
  else
   echo "很遗憾,您未能进入选拔赛。"
  fi
else
  echo "重新输入"
fi

三、case语句

1.格式

case  变量值  in
模式1)
      命令序列1
;;
模式2)
      命令序列2
;;
*)
     默认命令序列
esac 

2.case多分支流程:

 

3.实验

read -p "命令:" a
case $a in
start)
   systemctl start firewalld
   echo "开启防火墙"
;;
status)     
   systemctl status firewalld
   echo "查看防火墙状态"
;;          
stop)      
   systemctl stop firewalld
   echo "关闭防火墙"
;;    
restart)
   systemctl restart firewalld
   echo "重启防火墙"
;;  
*)
   echo "用法:$0 {start|stop|status|restart}"
esac

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值