Shell编程之条件语句
Posted Zmac111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell编程之条件语句相关的知识,希望对你有一定的参考价值。
一、条件测试操作
测试命令—test
可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为 0 表示条件成立,反之不成立)
格式1:test 条件表达式
格式2:[ 条件表达式 ] 注:中括号这里一定要有空格
二、文件测试
格式:[ 操作符 文件或目录 ]
常用的测试操作符
操作符 | 说明 |
---|---|
-d | 测试是否为目录(Directory) |
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试当前用户是否有权限执行(Excute) |
-L | 测试是否为符号链接 |
注: -d 和 -f 还能判断目录或文件是否存在
符号链接
三、整数值比较
格式:[ 整数1 操作符 整数2 ]
常用的测试操作符
操作符 | 说明 |
---|---|
-eq | 等于 |
-ne | 不等于大于 |
-gt | 大于 |
-lt | 小于 |
-le | 小于等于 |
-ge | 大于等于 |
举例1
当前登录用户数小于等于5,输出“还行”
实例2
Mem的空余内存与100M比较,小于就输出警告当前内存不足,内存为多少兆。
四、字符串比较
(1)字符串可用来查看用户输入、系统环境等是否满足条件
(2)交互式操作的shell脚本中,用来判断用户输入的位置参数是否符合要求
格式1:
[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
格式2:
[ -z 字符串 ] -检查字符串是否为空(Zero),对于未定义或赋予空值的变量将视为空串
[ -n 字符串 ] -检查字符串是否存在
常用的测试操作符
操作符 | 说明 |
---|---|
= | 第一个字符串与第二个字符串相同 |
!= | 第一个字符与第二个字符串不相同,“!”表示取反 |
-z | 字符串内容为空 |
-n | 判断是否有字符串存在 |
实操
给ACK赋值,一开始不给值,进行测试,查看输出结果。
然后给它赋值yes,进行测试,查看输出结果。
五、逻辑测试
用于判断两个或多个条件之间的依赖关系
常用的操作符:
-a或&& :逻辑与,“而且”的意思,前后条件需都成立
-o或|| :逻辑或,“或者”的意思,只需前后条件中一个成立
! :逻辑否,“不”的意思
格式1:[ 表达式1 ] 操作符 [ 表达式2 ]
格式2:命令1 操作符 命令2
实操1
逻辑或的实例
实操2
vim ping.sh
#!/bin/bash
ping -c 3 -i 0.5 -W 2 $1 &> /dev/null && echo "$1 is online" || echo "$1 is offline"
-c:发送包的个数
-i:发送包的间隔时间
-W:超时时间
-w:多少秒后停止 ping 命令操作
六、if语句
1.单分支结构
只有在条件成立的时候才会执行相应的操作,否则不执行。
格式:
if 条件测试操作
then
命令序列
fi
举例(三种表达方式)
第一种:正常的if语句格式,看起来整洁,若报错,提示行数容易发现。(推荐使用)
if [ 3 -gt 2 ]
then
echo “ok”
fi
第二种:都集中在一行,用“;”隔开,报错不易发现。
if [ 3 -gt 2 ]; then echo “ok”; fi
第三种:由条件测试拼凑而。
[ 3 -gt 2 ] && echo “ok”
实操
2.双分支结构
针对两种情况执行不同的操作
格式:
if 条件测试操作
then
命令序列 1
else
命令序列 2
fi
举例
查看80 端口是否在监听,如果在,输出网站服务已经在运行,反之,启动httpd服务。
3.多分支结构
针对if的特性,嵌套使用,进行多次判断。
格式:
if 条件测试操作 1
then
命令序列 1
elif 条件测试操作 2
then
命令序列 2
[else]
[命令序列 3]
fi
举例
考试成绩100分为优秀;90 到99分,抄写10遍;70 到89分,抄写20遍;60到69分,抄写30遍;0到59分,全部抄写30遍。输入其他值,显示输入有误。
七、case语句结构
用于变量存在多种取值,对每种取值执行不同的命令。
格式:
case 变量值 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 2
;;
* )
默认命令序列
esac
举例
考试成绩100分为优秀;90 到99分,抄写10遍;70 到89分,抄写20遍;60到69分,抄写30遍;0到59分,抄写40遍。输入其他值,显示输入有误。
第一种方法
第二种方法(采用通配符)
总结
掌握
(1)条件测试的语法(文件测试、整数值比较、字符串比较、逻辑测试)
(2)if条件语句(单分支、双分支、多分支)
(3)case语句的用法,及通配符的应用
以上是关于Shell编程之条件语句的主要内容,如果未能解决你的问题,请参考以下文章