shell编程之条件语句

一、条件测试

[root@localhost ~]# test a==b
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ a==b ]
[root@localhost ~]# echo $?
0

一、文件测试

文件测试:根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否存在,是否可读、可写、可执行等

选项说明
-d测试是否为目录(Directory)
-e测试目录或文件是否存在(Exist)
-f测试是否为文件(File)
-L测试是否为链接文件
-b测试是否为设备文件
-c测试是否为字符设备文件
-r测试当前用户是否有权限读取(Read)
-w测试当前用户是否有权限写入(Write)
-x测试是否设置有可执行(Excute) 权限
-s测试存在且文件大小为空
测试目录
[root@localhost ~]# [ -d /home ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -d /re ]
[root@localhost ~]# echo $?
1

二、整数测试

选项含义
-eq第一个数等于(Equal) 第二个数
-ne第一个数不等于(Not Equal) 第二个数
-gt第一个数大于(Greater Than) 第二个数
-lt第一个数小于(Lesser Than) 第二个数
-le第-个数小于或等于(Lesser or Equal) 第二个数
-ge第一个数大于或等于(Greater or Equal) 第二个数
[root@localhost ~]# [ 3==4 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 1 -eq 2 ]
[root@localhost ~]# echo $?
1

三、字符串测试

[root@localhost ~]# test a==b
[root@localhost ~]# echo $?
0
[root@localhost ~]# test a!=b #!表示否定、不的意思
[root@localhost ~]# echo $?
0

四、逻辑测试

&&:表示前一条命令执行成功时, 才执行后一条命令
II:示上一条命令执行失败后,才执行下一条命令

[root@localhost ~]# a=1
[root@localhost ~]# [ -z $a ] && echo y || echo n #-z检测变量值字符串是否为空值
n
[root@localhost ~]# [ -n $a ] && echo y || echo n #-n检测变量值字符串是否为非空值(空格算成非空值)
y

-a:表示且,同时满足
-o:表示或,满足一个

[root@localhost ~]# [ 1 -eq 2 -a 1 -lt 2 ] && echo y || echo n
n
[root@localhost ~]# [ 1 -eq 2 -o 1 -lt 2 ] && echo y || echo n
y

二、if语句

结构

单分支
只要满足“相对应的条件”,便可执行后面的命令

if  条件判断
  then 
      命令
fi

双分支
针对“条件成立”“条件不成立”两种情况,分别执行相应的代码

if 条件判断
  then
      命令
elif 条件判断
  then 
      命令
else
   命令
f

多分支
嵌套使用,进行多次判断

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

实例

#!/bin/bash
#评分
read -p "请输入分数" number
if [ $number -lt 0 -o $number -gt 100 ];then
                  echo "请重新输入"
elif [ $number -ge 90 -a $number -le 100 ];then
                  echo "优秀"
elif [ $number -ge 70 -a $number -le 89 ];then
                  echo "良好"
elif [ $number -ge 60 -a $number -le 69 ];then
                  echo "及格"
else
                  echo "不及格"
fi

case语句

当变量值有多个数值的情况,可以使用case
模式中的数字只能写[0-9],列:1[0-9]:表示10-19。
实例

#!/bin/bash
#输入一个月份,判断在一年那个季度
read -p "请输入月份:" yue
case $yue in
[1-3])
echo "第一季度";;
[4-6])
echo "第二季度";;
[7-9])
echo "第三季度";;
1[0-2])
echo "第四季度";;
*)
echo "输入错误"
esac
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值