Shell条件测试

一、条件测试操作

1、test命令

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

格式1:test 条件表达式
格式2:[ 条件表达式 ]   #前后必须有空格

2、文件测试

[操作符 文件或目录]

常用的测试操作符

-d :测试是否为目录 (Directory)

-e :测试目录或文件是否存在(Exist)

-f : 测试是否为文件(file)

-r : 测试当前用户是否有权限读取(Read)

-w: 测试当前用户是否有权限写入(Write)

-x: 测试当前用户是否有权限执行(excute)

示例

3、整数值比较

[ 整数1 操作符 整数2 ]

常用的测试符

-eq: 等于(Equal)

-ne: 不等于(Not Equal)

-gt: 大于 (Greater Than)

-lt: 小于 (Lesser Than)

-le: 小于或等于(Lesser or Equal)

-ge: 大于或等于(Greater or Equal)

示例

 free -m (查看内存使用情况)

  1.  free 查看内存使用情况
  2. sync
  3. echo 3>/proc/sys/vm/drop_caches  清理缓存
  4. free 再次查看内存

 4、字符串表示

  •  格式
格式1 :[ 字符串1 = 字符串2 ]
       [ 字符串1 != 字符串2 ]
格式2 :[ -Z 字符串]
  • 常用的测试操作符
=:字符串内容相同
!=:字符串内容不同,!号表示相反的意思
-z:字符串内容为空
  • 示例

 5、逻辑测试

(1)格式

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

(2)常用的操作测试

-a或&&:逻辑与

-o或||:逻辑或

!:逻辑否

 二、if语句的结构

1、单分支结构

(1)格式:

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

(2)单分支流程图

 (3)中括号的使用:

单个括号[ ]:必须要有空格 两个字符或数字之间的比较左右必须有空格,条件判断:test一种形式,[ ] 中间只能使用=和!,=比较字符串,如果使用<,>需要进行转义\. 然后中间如果比较数字要使用-lt等符号,不能使用\<比较数字,会被当成字符串处理

两个括号[ [ ] ]:可用于处理逻辑命令,也可以处理字符串是否相等,且使用<,>不用转义符

(4)示例1

 示例2

示例3

 

 

 2、双分支结构

(1)双分支结构

if 条件测试操作
 then  命令序列1
 else  命令序列2
fi
 
 
列:if [  50 -gt 40 ]
then echo "yes"
else echo "no"
fi

(2)双分支流程图

 (3)示例

示例1:用双分支结构ping单个IP地址

#!/bin/bash 
IP=192.168.88.130                                 ##定义IP=192.168.88.130这个地址
ping -c 5 -i 0.5 -w 8 192.168.88.130 &>/dev/null  ##-c 5指ping5次,-i 0.5 每0.5秒发生一个包 
                                                  ##-w 8 指ping的超时时间为8毫秒
if [ $? -eq 0 ];                                  ##&>/dev/null把输出的结果扔到黑洞里面
then                                              
echo " $IP is up "
else
echo " $IP is down "
fi

 

 示例2 用双分支结构写出能够实现创建用户并设置初始密码的shell脚本

 示例3:用双分支结构写出能够实现创建用户并设置初始密码的shell脚本

 

 示例4:用双分支结构写出能够实现Apcche服务自动安装启动的脚本

 方法二:

 

 3、多分枝结构

(1)格式

if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
 
 
例如
if 得分为90-100
then  判断为优秀
elif  分数为80-89
then  判断为良好
elif  分数为60-79
then  判断为合格
esle 判断为不合格
fi

(2)流程图

 (3)示例

示例1:用多分支结构写出能够实现交互式识别文件类型的脚本

示例2:用多分支结构写出能够实现交互式判断学生成绩为什么等级的脚本

 

三、case语句结构

1、case多分支结构

(1)格式:

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

(2)流程图

 (3)示例

示例1:用case多分支结构写出能够实现交互式判断输入的是什么字符的简单脚本

 示例2  用case多分支结构写出能够实现交互式判断学生成绩为什么等级的脚本

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值