shell 脚本之判断语句 if 详解

简介: 使用 Linux 系统这么长时间,对 shell 脚本也算是比较熟悉。其实不管是搞开发,还是搞运维,shell 脚本都是必备的基本技能。这次抽时间好好总结一下 shell 方面的知识,综合的再学习一下,记录。

使用 Linux 系统这么长时间,对 shell 脚本也算是比较熟悉。其实不管是搞开发,还是搞运维,shell 脚本都是必备的基本技能。这次抽时间好好总结一下 shell 方面的知识,综合的再学习一下,记录。这篇文章总结的是 shell 脚本的 if 语句的使用。

 

一、if 语句的基本语法

if [ 条件判断 ]; then
    ... ...
elif [ 条件判断 ]; then
    ... ...
else
    ... ...
fi

 

二、文件/目录的判断

关于文件或目录的相关判断方法:

[ -e file ]  判断文件是否存在
[ -f file ]  判断文件是否是普通文件
[ -d file ]  判断文件是否是目录文件
[ -b file ]  判断文件是否块设备文件
[ -c file ]  判断文件是否字符设备文件
[ -s file ]  判断文件是否是非空文件
[ -r file ]  判断文件是否可读
[ -w file ]  判断文件是否可写
[ -x file ]  判断文件是否可执行

 

三、数字比较判断

关于针对数字的判断,首先定义a=10, b=8

[root@vip ~]# a=10 b=8
[ $a -eq $b ]  判断 a 是否等于 b
[ $a -ne $b ]  判断 a 是否不等 b
[ $a -gt $b ]  判断 a 是否大于 b
[ $a -ge $b ]  判断 a 是否大等 b
[ $a -lt $b ]  判断 a 是否小于 b
[ $a -le $b ]  判断 a 是否小等 b

 

四、字符串的判断和比较

关于针对字符串的判断比较,首先定义 str1=abc, str2=abd

[root@vip ~]# str1=abc; str2=abd

[ -z str ]        判断 str 是否长度为0
[ -n str ]        判断 str 是否长度不为0
[ str1 == str2 ]  判断 str1 与 str2 是否相等
[ str1 != str2 ]  判断 str1 与 str2 是否不等
[ str1 \> str2 ]  判断 str1 是否大于 str2
[ str1 \< str2 ]  判断 str1 是否小于 str2
[[ str1 > str2 ]] 判断 str1 是否大于 str2
[[ str1 < str2 ]] 判断 str1 是否小于 str2

 

五、逻辑判断

[ $a -lt $b -a $str1 == $str2 ]     a 大于 b, 而且 str1 与 str2 相等  (&&)
[ $a -lt $b -o $str1 == $str2 ]     a 大于 b, 或者 str1 与 str2 相等  (||)
[[ $a -gt $b && $str1 == $str2 ]]   a 大于 b, 而且 str1 与 str2 相等  (&&)
[[ $a -gt $b || $str1 == $str2 ]]   a 大于 b, 或者 str1 与 str2 相等  (||)
[ $a -lt $b ] && [ $str1 == $str2 ] a 大于 b, 而且 str1 与 str2 相等  (&&)
[ $a -lt $b ] || [ $str1 == $str2 ] a 大于 b, 或者 str1 与 str2 相等  (||)

 

六、常用 if 实例

待更新。。。

相关文章
|
1天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
18 3
|
5天前
|
运维 监控 Shell
利用Shell脚本编写局域网监控软件:实时监测主机连接情况
本文介绍了如何使用Shell脚本创建一个局域网监控工具,以实时检查主机连接状态。脚本包括扫描IP地址范围检测主机可达性及使用`netstat`监控ESTABLISHED连接。此外,还展示了如何每60秒将连接数数据自动提交到指定网站API,以便实时跟踪网络活动。这个自动化监控系统有助于提升网络安全性和故障排查效率。
22 0
|
6天前
|
Shell
Shell脚本之流程控制语句
Shell脚本之流程控制语句
|
6天前
|
JSON 运维 监控
训练shell常用脚本练习(三)
【4月更文挑战第14天】shell代码训练(三)
22 1
|
10天前
|
存储 弹性计算 Shell
ecs服务器shell常用脚本练习(十)
【4月更文挑战第11天】shell代码训练(十)
140 0
|
10天前
|
弹性计算 Shell Go
ecs服务器shell常用脚本练习(九)
【4月更文挑战第10天】shell代码训练(八)
131 0
|
14天前
|
弹性计算 Shell Linux
ecs服务器shell常用脚本练习(六)
【4月更文挑战第4天】shell代码训练(六)
108 0
|
19天前
|
弹性计算 Shell 应用服务中间件
ecs服务器shell常用脚本练习(四)
【4月更文挑战第4天】shell代码训练(四)
96 0
|
21天前
|
Shell
【shell】实时查看网卡流量脚本
【shell】实时查看网卡流量脚本
|
21天前
|
Shell Linux
Linux的shell入门教程shell脚本入门教程
Linux的shell入门教程shell脚本入门教程
15 0