阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux shell 逻辑运算符、逻辑表达式详解

382次阅读
没有评论

共计 2080 个字符,预计需要花费 6 分钟才能阅读完成。

shell 的逻辑运算符 涉及有以下几种类型,因此只要适当选择,可以解决我们很多复杂的判断,达到事半功倍效果。

一、逻辑运算符

1、逻辑卷标表示意思

1)关于档案与目录的侦测逻辑卷标

-f 常用!侦测『档案』是否存在 eg: if [-f filename]

-d 常用!侦测『目录』是否存在

-b 侦测是否为一个『block 档案』

-c 侦测是否为一个『character 档案』

-S 侦测是否为一个『socket 标签档案』

-L 侦测是否为一个『symbolic link 的档案』

-e 侦测『某个东西』是否存在!

2)关于程序的逻辑卷标

-G 侦测是否由 GID 所执行的程序所拥有

-O 侦测是否由 UID 所执行的程序所拥有

-p 侦测是否为程序间传送信息的 name pipe 或是 FIFO(老实说,这个不太懂!)

3)关于档案的属性侦测

-r 侦测是否为可读的属性

-w 侦测是否为可以写入的属性

-x 侦测是否为可执行的属性

-s 侦测是否为『非空白档案』

-u 侦测是否具有『SUID』的属性

-g 侦测是否具有『SGID』的属性

-k 侦测是否具有『sticky bit』的属性

4)两个档案之间的判断与比较;例如[test file1 -nt file2]

-nt 第一个档案比第二个档案新

-ot 第一个档案比第二个档案旧

-ef 第一个档案与第二个档案为同一个档案(link 之类的档案)

5)逻辑的『和(and)』『或(or)』

&& 逻辑的 AND 的意思

|| 逻辑的 OR 的意思

2、运算符号 代表意义

= 等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串

!= 不等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串

< 小于 应用于:整型比较 在[] 中,不能使用 表示字符串

> 大于 应用于:整型比较 在[] 中,不能使用 表示字符串

-eq 等于 应用于:整型比较

-ne 不等于 应用于:整型比较

-lt 小于 应用于:整型比较

-gt 大于 应用于:整型比较

-le 小于或等于 应用于:整型比较

-ge 大于或等于 应用于:整型比较

-a 双方都成立(and)逻辑表达式 –a 逻辑表达式

-o 单方成立(or)逻辑表达式 –o 逻辑表达式

-z 空字符串

-n 非空字符串

二、逻辑表达式

1、test 命令

使用方法:test EXPRESSION

如:

[root@localhost ~]# test 1 = 1 && echo ‘ok’

ok

[root@localhost ~]# test -d /etc/ && echo ‘ok’

ok

[root@localhost ~]# test 1 -eq 1 && echo ‘ok’

ok

[root@localhost ~]# if test 1 = 1 ; then echo ‘ok’; fi

ok

注意:所有字符 与逻辑运算符直接用“空格”分开,不能连到一起。

2、精简表达式

[] 表达式

[root@localhost ~]# [1 -eq 1] && echo ‘ok’

ok

[root@localhost ~]# [2 < 1] && echo ‘ok’

-bash: 2: No such file or directory

[root@localhost ~]# [2 < 1] && echo ‘ok’

[root@localhost ~]# [2 -gt 1 -a 3 -lt 4] && echo ‘ok’

ok

[root@localhost ~]# [2 -gt 1 && 3 -lt 4] && echo ‘ok’

-bash: [: missing `]’

注意:在 [] 表达式中,常见的 >,< 需要加转义字符,表示字符串大小比较,以 acill 码 位置作为比较。不直接支持 <> 运算符,还有逻辑运算符 || && 它需要用 -a[and] –o[or] 表示

[[]] 表达式

[root@localhost ~]# [1 -eq 1] && echo ‘ok’

ok

[root@localhost ~]$ [[2 < 3]] && echo ‘ok’

ok

[root@localhost ~]$ [[2 < 3 && 4 > 5]] && echo ‘ok’

ok

注意:[[]] 运算符只是 [] 运算符的扩充。能够支持 <,> 符号运算不需要转义符,它还是以字符串比较大小。里面支持逻辑运算符:|| &&

3、性能比较

bash 的条件表达式中有三个几乎等效的符号和命令:test,[]和 [[]]。通常,大家习惯用 if [];then 这样的形式。而[[]] 的出现,根据 ABS 所说,是为了兼容 >< 之类的运算符。以下是比较它们性能,发现 [[]] 是最快的。

$ time (for m in {1..100000}; do test -d .;done;)

real 0m0.658s

user 0m0.558s

sys 0m0.100s

$ time (for m in {1..100000}; do [-d .];done;)

real 0m0.609s

user 0m0.524s

sys 0m0.085s

$ time (for m in {1..100000}; do [[-d .]];done;)

real 0m0.311s

user 0m0.275s

sys 0m0.036s

不考虑对低版本 bash 和对 sh 的兼容的情况下,用 [[]] 是兼容性强,而且性能比较快,在做条件运算时候,可以使用该运算符。

好啦!今天的分享到这就结束了,希望大家持续关注马哥教育官网!每天都会有大量优质内容与大家分享!声明:文章转载于网络,版权归原作者所有,如有侵权请及时联系删除!

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-12-03发表,共计2080字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7971749
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...