6 Shell脚本的条件测试与比较

已知:$?执行命令后 返回0 表示真 返回1 表示假 
                        6.1.1条件测试  常用的语法
     条件表达式语法               说明
1 test <测试表示式>   test命令与后面表达式最少一个空格   等同于2
2    [ <测试表示式> ]  []边界与内容左右2边最少一个空格          推荐使用
3 [[ <测试表示式> ]]    [[]]边界与内容左右2边最少一个空格 扩展的test命令
4 ((<测试表示式>))       (())2端不需要有空格 常用于计算

注意事项
在双中括号[[]]中可以使用通配符 && || > < 不能用于[]中    
[]可以使用-a -o -gt -lt 
对于整数的关系运算 也可以使用shell的算术运算符(())

                    6.1.2 test条件测试的简单语法及示例 
语法: test -参数 <条件表达式>
-f 普通文件
-z 测试字符串为零 表达式成立 非零 不成立 

    test -f file && echo true || echo false 
test的-f参数用于测试文件是否为普通文件 test命令若执行成功(假) 则执行&&后面的命令
而||后面的命令式test执行失败(假)的后执行的命令
解析:如果test文件存在 则输出true  不存在输出false

也可以只用上面一半逻辑(仅有一个&&或||)
test -f /tmp/oldboy.txt && echo 1 #若表达式成功 则输出1   
test -f /tmp/oldboy.txt || echo o   #若表达式不成功 则输出0

补充:&&和||的两端可以有空格 也可以没空格 

                           6.1.3 []中括号条件测试语法及示例 
语法: [<条件表达式>]

示例 [ -f /tmp/old.boy.txt ] && echo 1 || echo 0 
-f 前后至少有一个空格 ]前后至少有一个空格  echo 后至少有一个空格
                              
                          6.1.4[[]]条件测试语法及示例        
   语法:[[ <条件表达式> ]]
   注意:双中括号的两端也要有空格
   [[ -f /tmp/old.boy.txt ]] && echo 1 || echo 0

   完整的 [] [[]]的用法可通过 man bash获取 

                         6.2 文件测试表达式 
6.2.1 文件测试表达式的用法
常用的文件测试操作符     全拼                 说明(真则测试表达式成立)
-d 文件              directory           文件存在且为目录则为真
-f 文件                 file             文件存在且为普通文件则为真
-e 文件                exist             文件存在则为真
-r文件                  read             文件存在且可读则为真 
-s文件                  size             文件存在且文件大小不为0则为真
-w文件                 write             文件存在且可写则为真
-L文件                  link             文件存在且为链接文件则为真
-x文件                                   文件存在且可执行则为真
fl -nt f2            newer than      文件f1比文件f2新则为真 按文件修改时间来计算
f1 -ot f2            older thant     文件f1比文件f2老则为真 按文件修改时间来计算

[root@localhost /]# [ -w oldboy ] && echo 1 || echo 0
1
[root@localhost /]# ll | grep oldboy
-rw-r--r--    1 root root     0 5月   8 01:16 oldboy

提示 测试文件的读写执行等属性 不光是根据文件属性rwx的表示来判断 还有看当前执行的测试用户是否真的可以按照对应的权限操作该文件 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/608516.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C程序内存分布及static变量

C程序内存分布及static变量 C语言中程序的内存分布 [&#x1f517;1](https://www.cnblogs.com/miaoxiong/p/11021827.html)[&#x1f517;2](https://blog.csdn.net/chen1083376511/article/details/54930191)c/c编译连接后二进制文件的存储动静态存储方式和存储区动态存储方式…

贪心算法--将数组和减半的最小操作数

本题是力扣2208---点击跳转题目 思路&#xff1a; 要尽快的把数组和减小&#xff0c;那么每次挑出数组中最大的元素减半即可&#xff0c;由于每次都是找出最值元素&#xff0c;可以用优先队列来存储这些数组元素 每次取出最值&#xff0c;减半后再放入优先队列中&#xff0c;操…

Centos7使用kubeadm搭建k8s集群(一主两从)----(mac版)

一、环境准备 1、下载centos7镜像 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 下载地址: centos安装包下载_开源镜像站-阿里云 选择对应的版本即可&#xff0c;我下载的&#xff1a;CentOS-7-x86_64-DVD-2207-02.iso 2、使用VirtualBox安装centos 选择新建&#xff0c…

Rust 通用代码生成器莲花,红莲尝鲜版二十三,多对多候选,增强数据库反射项目功能

Rust 通用代码生成器莲花&#xff0c;红莲尝鲜版二十三&#xff0c;此版本新增了多对多候选功能&#xff0c;增强了数据库自动反射功能和模板向导的编辑器。请部署在 Tomcat9 的 webapps 目录下。 多对多候选功能大大增强了一个数据库自动反射成一个项目的功能&#xff0c;它可…

Docx文件误删除如何恢复?别再花冤枉钱了,4个高效恢复软件!

不管是工作还是学习&#xff0c;总是会与各种各样的文件打交道。文件量越多就越容易出现文件丢失、文件误删的情况。遇到这些情况&#xff0c;失去的文件还能找回来吗&#xff1f;只要掌握了一些数据恢复方法&#xff0c;是很有机会恢复回来的&#xff0c;下面我会将这些方法分…

MacBook Pro(Intel集成显卡)成功安装启动ComfyUI详细教程

Mac配置 MAC CPU: 2.2 GHz 四核Intel Core i7MAC 系统版本&#xff1a;12.3MAC 显卡&#xff1a; Intel Iris Pro 1536 MBMAC 内存&#xff1a;16Gpython 3.12.2 ComfyUI 的安装方法介绍 ComfyUI 是一个模块化的 Stable Diffusion GUI&#xff0c;工作界面是可视化的流程节点…

图神经网络——GCN,GraphSAGE

1、应用 生物化学&#xff1a;分子指纹识别、药物分子设计、疾病分类等 交通领域&#xff1a;对交通需求的预测、对道路速度的预测 计算机图像处理&#xff1a;目标检测、视觉推理等 自然语言处理&#xff1a;实体关系抽取、关系推理等 2、数据集介绍 CORA数据集由2708篇论文&…

影视极品转场音效大全,经典获奖通用音效素材

一、素材描述 本套音效素材&#xff0c;大小15.02G&#xff0c;16个压缩文件。 二、素材目录 01-华纳兄弟电影音效库合辑&#xff08;2个压缩文件&#xff09; 02-影视极品转场音效&#xff08;2个压缩文件&#xff09; 03-好莱坞经典综合音效&#xff08;4个压缩文件&…

线程安全问题、同步代码块、同步方法

线程安全问题就是 用线程同步来解决线程安全问题 同步&#xff1a;一个线程接着一个线程等待执行 同步代码块&#xff1a; 通过锁来解决卖到重复票的问题&#xff1a;卖票问题和存钱取钱问题&#xff08;见其他两篇文章&#xff09; 同步方法&#xff1a;

杨辉三角的打印

题目内容&#xff1a; 在屏幕上打印杨辉三角。 思路&#xff1a; 首先我们通过观察发现&#xff0c;每一步的打印都与行列数有关&#xff0c;中间的数据由这一列和上一行的前一列数据控制。所以我们可以使用二维数组进行操作&#xff1a; &#xff08;&#xff11;&#xff…

用Rust解决鸡兔同笼问题

目录 一、什么是鸡兔同笼问题&#xff1f; 二、用Rust解决鸡兔同笼问题 三、鸡兔同笼问题在实际生活中的应用有哪些&#xff1f; 一、什么是鸡兔同笼问题&#xff1f; 鸡兔同笼问题是一种古代著名的数学问题&#xff0c;用于训练逻辑思维和解决方程的能力。 鸡兔同笼问题起…

API低代码平台介绍2-最基本的数据查询功能

最基本的数据查询功能 本篇文章我们将介绍如何使用ADI平台定义一个基本的数据查询接口。由于是介绍平台具体功能的第一篇文章&#xff0c;里面会涉及比较多的概念介绍&#xff0c;了解了这些概念有助于您阅读后续的文章。 ADI平台的首页面如下&#xff1a; 1.菜单介绍 1.1 O…

DNS 解析在网络传输中有什么意义?

首先我们先说说什么是DNS解析&#xff1f; DNS解析是将域名解析为对应的IP地址的过程。DNS它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便地访问互联网。DNS解析的过程就是寻找哪个IP地址对应你所输入的网址&#xff0c;然后将网页内容返回给用户…

GRS认证的优点和缺点是什么?

GRS认证&#xff08;Global Recycled Standard&#xff09;的优点主要体现在以下几个方面&#xff1a; 环保性&#xff1a;GRS认证鼓励和保证产品中使用更多的回收材料&#xff0c;从而减少对原始资源的需求和开采&#xff0c;有助于降低环境负荷&#xff0c;促进资源的循环利用…

案例研究|硬之城借助DataEase以数据驱动供应链精细化管理

深圳硬之城信息技术有限公司&#xff08;以下简称为“硬之城”&#xff09;成立于2015年&#xff0c;专注电子元件供应链领域&#xff0c;定位于电子产业供应链与智造平台。硬之城通过名为“Allchips”的集成式服务平台&#xff0c;为客户提供一站式的电子元件采购和供应链管理…

Redis + OpenResty 多级缓存

多级缓存 初识 OpenResty OpenResty - 开源官方站 基于 Nginx的高性能 Web 平台&#xff0c;用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。 具备Nginx的完整功能基于Lua语言进行扩展&#xff0c;集成了大量精良的 Lua 库、第三方模块允…

基士得耶CP 6303c速印机不制版故障检修

故障&#xff1a;基士得耶CP 6303c经常提示版纸卡纸&#xff0c;重设版纸 版纸还没下滚筒&#xff0c;卡在版纸仓里面,手动滚动裁纸刀可以解决&#xff0c;但第二天又是这个毛病&#xff1b; 版纸定位传感器的灵敏度调节一下,然后给机器全面做个清洁大保养&#xff0c;尤其是传…

python中w、r表示什么意思

文件读写就是一种常见的IO操作。 文件读写操作步骤 不同的编程语言读写文件的操作步骤大体都是一样的&#xff0c;都分为以下几个步骤&#xff1a; 1&#xff09;打开文件&#xff0c;获取文件描述符&#xff1b; 2&#xff09;操作文件描述符--读/写&#xff1b; 3&#…

电商核心内容揭秘50:个性化广告与投放策略

相关系列文章 电商技术揭秘相关系列文章合集&#xff08;1&#xff09; 电商技术揭秘相关系列文章合集&#xff08;2&#xff09; 电商技术揭秘相关系列文章合集&#xff08;3&#xff09; 电商技术揭秘四十一&#xff1a;电商平台的营销系统浅析 电商技术揭秘四十二&#…

[MQTT]Mosquitto的內網連接(intranet)和使用者/密碼權限設置

[MQTT | Raspberry Pi]Publish and Subscribe with RSSI Data of Esp32 on Intranet 延續[MQTT]Mosquitto的簡介、安裝與連接測試文章&#xff0c;接著將繼續測試在內網的兩台機器是否也可以完成發佈和訂閱作業。 同一網段的兩台電腦測試: 假設兩台電腦的配置如下: A電腦為發…
最新文章