RHCE---shell 条件测试

news2024/10/2 16:25:59

文章目录

  • 目录

    文章目录

    前言

    一.条件测试

    概述:

     文件测试 

    整数测试:

    总结


前言

当我们完成某一命令的编写时,除了观察输出的内容,我们又如何得知命令是否执行成功呢?

这里,我们需要用到条件测试


一.条件测试

概述:

条件测试是在Shell脚本中非常重要的一部分,它们用于测试脚本中的变量或表达式是否成立。

分类:

  • test:条件测试的标准命令。例如,使用test命令测试一个变量的值是否等于某个值。

  • [ ]:方括号(中括号)是test的另一种形式,它们被称为test的别名。例如,[ $var -eq 10 ] 表示测试变量 $var 是否等于10。

  • [[ ]]:双方括号是Bash Shell的重要特性,比test和[ ]更强大,可以使用通配符等进行模式匹配,&& || > < 等操作符可以直接应用于双中括号中,但不能用于[ ]

  • (( )):该操作符用于算术运算测试。可使用数学符号> < = 不需要使用参数 例如,使用(( num > 10 )) 测试变量 $num 是否大于10。

语法格式:

  • 格式1: test  -参数 条件表达式
  • 格式2: [ 条件表达式 ]     # 注意:[]的左右要有 空格  
  • 格式3: [[ 条件表达式 ]]   # 注意:[]的左右要有 空格
  • 格式4: ((条件表达式))    #注意:不需要左右有 空格

结果测试:

  • test单独使用,判断条件为真,echo $? 真返回0,假返回1 

 案例 1

#执行成功
[root@server ~]# test -f /etc/passwd
[root@server ~]# echo $?
0
#执行失败
[root@server ~]# test -f /etc/aa
[root@server ~]# echo $?
1
[root@server ~]# test -f /etc/passwd && echo 1 || echo 0
1
[root@server ~]# [-f /etc/passwd]   # 注意:[] 中要有空格
bash: [-f: command not found...

 文件测试 

格式:如上 

参数: 

  • -f:测试是否为普通文件
  • -d:测试是否是目录
  • -e:检测文件是否存在 存在返回true
  • -s:测试文件是否为空,文件为空返回true
  • -r:存在且可读
  • -w:存在且可写
  • -x:存在且可执行

案列 1: 

[root@server ~]# [ -d /root ] && echo y || echo n
y

案例 2:编写脚本测试文件是否存在

[root@server ~]# vim temp1.sh
#!/bin/bash
FILE=$1            #$1代表位置变量,此处以及下面一行改为read -p "请输入文件名: " FILE
echo FILE        
if test -e $FILE 
then
        echo  "$FILE文件已存在"
else    
        echo  "$FILE文件不存在,开始新建..."
        touch  $FILE
        ls  -l $FILE
fi 
[root@server ~]# bash temp1.sh /etc/passwd #位置变量$1代表/etc/passwd
/etc/passwd
/etc/passwd文件已存在

整数测试:

作用:

  • 用于比较两个数值的大小关系,操作的对象是数值 

 案例:

[root@server ~]# [ 5 -gt 3 ] && echo y || echo n  
y
n

 拓展知识:

# 检查左侧内容是否包含右侧的表达式,可以使用 =~ 正则
匹配,表示是否包含
[root@server ~]# n=123
[root@server ~]# [[ "$n" =~ ^[0-9]+$ ]] && echo y || echo n
y
[root@server ~]# n=123ttt
[root@server ~]# [[ "$n" =~ ^[0-9]+$ ]] && echo y || echo n
n


总结

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SEO内链优化的8个终极策略

网站SEO优化主要分为两个大类&#xff0c;一类是站外优化&#xff0c;另一类是站内优化。站内优化的内链建设优化是SEO优化工作的重中之重&#xff0c;可以视为网站内部的内功修炼之一。本文将介绍什么是内链以及如何通过内链优化来提升SEO排名。 什么是内链&#xff1f; 内链…

ArrayList与List的层级关系及ArrayList解析

List与ArrayList的关系 List List是一个接口&#xff0c;不能直接实例化。如果要使用必须去实例化List的实现类——ArrayList和LinkedList站在数据结构的角度看&#xff0c;List就是一个线性表。常见的线性表&#xff1a;顺序表、链表、栈、队列等 线性表 线性表是n个具有相…

解决SpringBoot整合Activiti引用JPA:缺少javax.persistence.EntityManagerFactory

系统接入工作流Activiti的时候&#xff0c;发现activiti初始化表&#xff0c;操作数据库使用的是jpa,我们这里解决办法就是引入spring-data-jpa-starter自动配置EntityManagerFactory。 首先把工作流sql文件执行 基础依赖jar引入 这里忽略Activiti的基础依赖&#xff0c;以下…

什么是云原生?土生土长?

“云原生”&#xff08;Cloud Native&#xff09;是一种构建和运行应用程序的方法&#xff0c;这种方法充分利用了云计算的优势。云原生应用程序是为云环境设计的&#xff0c;通常是在容器中运行&#xff0c;并被设计为在微服务架构中运行&#xff0c;这使得它们能够快速扩展和…

进公司第二天:绿盾+TFS拉取代码

1.配置绿盾 绿盾&#xff1a;一种安全软件 遇到的问题 TFS端口号&#xff1a;192.168.3.231 服务端口号&#xff1a;默认&#xff08;千万别瞎写啥的&#xff09; 2.配置TFS拉取代码 TFS利用插件 &#xff0c;输入公司给你的信息你的各种信息 拉取代码就行。 3.查看代码 —…

系统架构师备考倒计时12天(每日知识点)

1. 基于架构的软件设计&#xff08;ABSD) (ABSD方法是架构驱动&#xff0c;即强调由业务【商业】、质量和功能需求的组合驱动架构设计。ABSD方法有三个基础。第一个基础是功能的分解。在功能分解中&#xff0c;ABSD方法使用已有的基于模块的内聚和耦合技术&#xff1b;第二个基…

上位机通过Modbus转Profinet网关与变频器Modbus通讯配置案例

上位机与变频器Modbus通讯是通过Modbus转Profinet网关来实现的。这个网关可以理解为一个通信翻译器&#xff0c;负责将上位机通过Modbus协议发送的数据转换为Profinet协议&#xff0c;再通过Profinet网络与变频器进行通信。 上位机通过Modbus转Profinet网关与变频器Modbus通讯&…

一些基本图像预处理---将一个文件中的所有图片进行尺度归一化、查看每个像素的RGB值,将指定颜色切换为白色、将文件中所有图片从png到jpg的切换

目录 1.将一个文件中的所有图片进行尺度归一化 2. 查看一张图片的每个像素的RGB值 3.将指定颜色切换成其他颜色&#xff08;代码中将红色切换为白色&#xff09; 4.将一个文件中所有图片从png到jpg的切换 5.将一个文件夹中的所有图像重命名从1开始 1.将一个文件中的所有图…

java--switch语句

1.switch语句 是通过比较值来决定执行那条分支。 2.switch分支的执行流程 ①先执行表达式的值&#xff0c;再拿着这个值去与case后的值进行匹配。 ②与那个case后的值匹配为true就执行那个case块的代码&#xff0c;遇到break就跳出switch分支。 ③如果全部case后的值与之匹…

睿趣科技:抖音小店申请流程

随着移动互联网的发展&#xff0c;越来越多的人开始尝试通过开设网店来创业。抖音作为国内最受欢迎的短视频平台之一&#xff0c;也推出了自己的电商功能——抖音小店。那么&#xff0c;如何申请抖音小店呢?下面就为大家详细介绍一下抖音小店的申请流程。 首先&#xff0c;打开…

powerdesigner下载安装教程

1、什么是PowerDesigner PowerDesigner是Sybase公司的CASE工具集&#xff0c;使用它可以方便地对管理信息系统进行分析设计&#xff0c;它几乎包括了数据库模型设计的全过程。利用PowerDesigner可以制作数据流程图、概念数据模型&#xff08;ConceptualDataModel&#xff09;、…

从语言层面了解线程(std::thread)使用的里里外外

从语言层面了解线程(std::thread)使用的里里外外 使用 C标准库提供的 std::thread&#xff0c;配合 std::mutex、std::condition_variable 等工具可以很方便地编写并发程序。C标准库针对不同的操作系统中并发编程相关的系统调用做了很好的封装&#xff0c;提供了非常简洁易用的…

html iframe 框架有哪些优缺点?

目录 前言&#xff1a; 用法&#xff1a; 理解&#xff1a; 优点&#xff1a; 嵌套外部内容&#xff1a; 独立性&#xff1a; 分离安全性&#xff1a; 跨平台兼容性&#xff1a; 方便维护&#xff1a; 缺点&#xff1a; 性能开销&#xff1a; 用户体验问题&#xf…

智慧公厕:打造更美好的城市生活环境

在信息技术迅猛发展的今天&#xff0c;智慧公厕作为一种创新的城市管理模式&#xff0c;正逐渐受到人们的关注。以物联网、大数据、人工智能为基础&#xff0c;智慧公厕正逐步改变传统公厕的面貌&#xff0c;为城市居民提供更便捷、舒适的公共服务。本文将以智慧公厕源头厂家广…

登福布斯小企业推荐邮箱供应商榜单:高效沟通,轻松管理

近日&#xff0c;知名财经网站福布斯发布了一份针对小企业的推荐邮箱供应商名单 &#xff0c;其中Zoho Mail企业邮箱凭借其卓越的产品特性和优质的客户服务成功上榜。 Zoho Mail企业邮箱是由印度科技公司Zoho Corporation研发的一款全功能电子邮件和协作平台&#xff0c;在中国…

C++基础语法——C++11

目录 1. 统一的列表初始化 ①{}进行初始化 ②std::initializer_list 1.类型 2.使用场景 2.声明 ①auto ②decltype ③nullptr 3.范围for 4.右值引用与移动语义 ①左值引用与右值引用 ②左值引用与右值引用的比较 ③左值引用与右值引用的使用场景与意义、移动语义…

Python算法练习 10.24

leetcode 199 二叉树的深度 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,null,3] 输出: [1,3]示例 3: 输…

统计学习方法 支持向量机(上)

文章目录 统计学习方法 支持向量机&#xff08;上&#xff09;线性可分支持向量机与硬间隔最大化定义硬间隔最大化对偶算法 线性支持向量机与软间隔最大化定义软间隔最大化对偶算法合页损失函数 统计学习方法 支持向量机&#xff08;上&#xff09; 读李航的《统计学习方法》中…

分区操作系统

简单介绍 什么是分区 首次提出于ARINC 653标准&#xff0c;它是航空领域的一个标准&#xff0c;定义了多分区操作系统的核心服务。 分区使得操作系统的各个功能模块&#xff08;即每个分区&#xff09;看起来好像都被分配了独立的处理器和外设&#xff0c;它们之间通过专线通…

NVIDIA TensorRT 简介及使用

NVIDIA TensorRT 简介及使用 1. NVIDIA TensorRT 的简介2. NVIDIA TensorRT 的优势2.1 推理速度提升 36 倍2.2 优化推理性能2.3 加速每一项工作负载2.4 使用 Triton 进行部署、运行和扩展 3. NVIDIA TensorRT 大型语言模型的推理4. NVIDIA TensorRT 的使用方法5. NVIDIA Tensor…