当前位置: 首页 > news >正文

RHCE---shell 条件测试

文章目录

  • 目录

    文章目录

    前言

    一.条件测试

    概述:

     文件测试 

    整数测试:

    总结


前言

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

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


一.条件测试

概述:

条件测试是在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 
thenecho  "$FILE文件已存在"
else    echo  "$FILE文件不存在,开始新建..."touch  $FILEls  -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


总结

相关文章:

RHCE---shell 条件测试

文章目录 目录 文章目录 前言 一.条件测试 概述&#xff1a; 文件测试 整数测试&#xff1a; 总结 前言 当我们完成某一命令的编写时&#xff0c;除了观察输出的内容&#xff0c;我们又如何得知命令是否执行成功呢&#xff1f; 这里&#xff0c;我们需要用到条件测试 一.条…...

Linux下QT打开文件选择对话框时,程序报错退出

系统&#xff1a;Ubuntu QString fileName QFileDialog::getOpenFileName(this, "open", "./", "document Files (*.pdf)"); 调用该语句弹出文件对话框时&#xff0c;程序崩溃退出 错误提示&#xff1a; (Widget:5272): Gtk-WARNING **: 14…...

PyTorch中的intrusive_ptr

PyTorch中的intrusive_ptr 前言 intrusive_ptr與unique_ptr&#xff0c;shared_ptr等一樣&#xff0c;都是smart pointer。但是intrusive_ptr比較特別&#xff0c;它所指向的物件類型必須繼承自intrusive_ptr_target&#xff0c;而intrusive_ptr_target必須實現引用計數相關的…...

webrtc-stream编译报错记录

磁盘空间不足错误 错误信息 677.2 fatal: cannot create directory at blink/web_tests/external/wpt: No space left on device说明&#xff1a;这个错误是由于本地在配置docker资源时所给磁盘空间太小导致&#xff0c;直接根据镜像大小合理分配资源大小即可 pushd和popd执…...

什么是Docker CLI

Docker CLI&#xff08;命令行界面&#xff09;是一个工具&#xff0c;允许用户通过命令行或终端与Docker进行交互。Docker是一个开源平台&#xff0c;用于开发、运送和运行应用程序。Docker使用容器化技术来打包应用程序及其依赖项&#xff0c;以确保在不同环境中的一致性和隔…...

Java项目_家庭记账(简易版)

文章目录 简介代码实现 简介 该项目主要用来练习&#xff0c;Java的变量&#xff0c;运算符&#xff0c;分支结构和循环结构的知识点。 程序界面如下&#xff1a; 登记收入 登记支出 收支明细 程序退出 代码实现 package project;import java.util.Scanner;import sta…...

vscode json文件添加注释报错

在vscode中创建json文件&#xff0c;想要注释一波时&#xff0c;发现报了个错&#xff1a;Comments are not permitted in JSON. (521)&#xff0c;意思是JSON中不允许注释 以下为解决方法&#xff1a; 在vscode的右下角中找到这个&#xff0c;点击 在出现的弹窗中输入json wit…...

vue3移动端嵌入pdf的两种办法

1.使用embed嵌入 好处&#xff1a;简单&#xff0c;代码量少&#xff0c;功能齐全 缺点&#xff1a;有固定样式&#xff0c;难以修改&#xff0c;不可定制 <embed class"embedPdf" :src"pdfurl" type"application/pdf">2.使用vue-pdf-e…...

中文编程开发语言工具系统化教程初级1上线

中文编程系统化教程初级1 学习编程捷径&#xff1a;&#xff08;不论是正在学习编程的大学生&#xff0c;还是IT人士或者是编程爱好者&#xff0c;在学习编程的过程中用正确的学习方法 可以达到事半功倍的效果。对于初学者&#xff0c;可以通过下面的方法学习编程&#xff0c;…...

零售数据分析模板分享(通用型)

零售数据来源多&#xff0c;数据量大&#xff0c;导致数据的清洗整理工作量大&#xff0c;由于零售的特殊性&#xff0c;其指标计算组合更是多变&#xff0c;进一步导致了零售数据分析工作量激增&#xff0c;往往很难及时分析数据&#xff0c;发现问题。那怎么办&#xff1f;可…...

Spring Cloud之微服务

目录 微服务 微服务架构 微服务架构与单体架构 特点 框架 总结 SpringCloud 常用组件 与SpringBoot关系 版本 微服务 微服务&#xff1a;从字面上理解即&#xff1a;微小的服务&#xff1b; 微小&#xff1a;微服务体积小&#xff0c;复杂度低&#xff0c;一个微服…...

Linux命令(104)之date

linux命令之date 1.date介绍 linux命令date用来设置和显示系统日期和时间 2.date用法 date [参数] date参数 参数说明-s修改并设置时间-d可以显示以前和未来的时间%H小时%M分钟%S秒%X等价于%H %M %S%F显示当前所有时间属性%Y完整年份%m月%d日%A星期的全称 3.实例 3.1.当前…...

微信小程序投票管理系统:打造智能、便捷的投票体验

前言 随着社交网络的兴起和移动互联网的普及&#xff0c;人们对于参与和表达意见的需求越来越强烈。在这个背景下&#xff0c;微信小程序投票管理系统应运而生。它为用户提供了一个智能、便捷的投票平台&#xff0c;使用户可以轻松创建和参与各种类型的投票活动。本文将详细介…...

【算法训练-动态规划 五】【二维DP问题】编辑距离

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【动态规划】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…...

Windows电脑如何录制电脑桌面?

如果你使用的电脑是Windows系统&#xff0c;那你是不是想知道如何在Windows电脑上录制电脑桌面&#xff1f; 本文以win10为例&#xff0c;好消息是&#xff0c;Windows 10电脑自带录屏工具&#xff0c;你可以直接使用此录屏工具轻松录制视频&#xff0c;而无需下载其他第三方软…...

ubuntu18.04双系统安装(2023最新最详细)以及解决重启后发现进不了Ubuntu问题

目录 一.简介 二.安装教程 1.首先确定了电脑的引导格式是UEFIGPT还是BIOSMBR 2. 使用Windows磁盘管理划分足够的磁盘空间 3. 开始安装 三.重启后发现自动进入WIN10系统了&#xff0c;进不了Ubuntu&#xff1f; 一.简介 Linux是一种自由和开放源代码的操作系统内核&#x…...

Springboot + screw 数据库快速开发文档

1、方式1 引入依赖 <dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.5</version></dependency> /*** 文档生成 Springboot2.X screw数据库快速开发文档&#xff08;74&…...

2 第一个Go程序

概述 在上一节的内容中&#xff0c;我们介绍了Go的前世今生&#xff0c;包括&#xff1a;Go的诞生、发展历程、特性和应用领域。从本节开始&#xff0c;我们将正式学习Go语言。Go语言是一种编译型语言&#xff0c;也就是说&#xff0c;Go语言在运行之前需要先进行编译&#xff…...

Leetcode—2678.老人的数目【简单】

2023每日刷题&#xff08;八&#xff09; Leetcode—2678.老人的数目 int countSeniors(char ** details, int detailsSize){ int ans 0; int i; int tens 0; int ones 0; for(i 0; i < detailsSize; i) { tens ((details i) 11) - ‘0’; ones ((details i) 12)…...

解决 /bin/bash^M: bad interpreter: No such file or directory

问题描述 linux 系统中知行*.sh 文件报/bin/bash^M: bad interpreter: No such file or directory 原因&#xff1a; .sh文件是在windows系统编写的&#xff0c;在linux执行就有问题 解决过程 转化下格式执行如下命令 # dos2unix app.sh 结果bash: dos2unix: command not …...

告别打包失败!Matlab开发者必看:Runtime版本精准匹配与离线部署全攻略

MATLAB Runtime精准匹配与离线部署实战指南 当MATLAB开发者遭遇Runtime版本陷阱 深夜的办公室里&#xff0c;王工程师盯着屏幕上第7次打包失败的红色错误提示&#xff0c;揉了揉酸胀的眼睛。这个场景对许多MATLAB开发者来说并不陌生——明明在自己的R2022b Update 3环境中完美运…...

Python(while循环)

目录 1.while 循环的基本概念 1.1 语法格式 1.2 最简单的示例 1.3 while 与 for 的对比 2. 代码执行顺序详解 3. 无限循环及其控制 3.1 无限循环的基本写法 3.2 避免无限循环的常见错误 4. break、continue 与 else 4.1 break&#xff1a;提前终止整个循环 4.2 cont…...

光学萌新看过来:用Lighttools 8.4.0配合Solidworks做光机设计,第一步安装和环境配置怎么做?

光学与机械协同设计&#xff1a;Lighttools 8.4.0与Solidworks环境配置全指南 在光机一体化设计领域&#xff0c;光学仿真软件与机械建模工具的协同工作已成为行业标配。对于刚接触光学设计的机械工程师&#xff0c;或是需要将光学分析融入机械设计流程的团队而言&#xff0c;掌…...

Perplexity症状查询功能性能对比白皮书:横向测试12家竞品,它在罕见病关键词召回率上领先41.6%,但时间敏感场景响应超时率达23.8%

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity症状查询功能概览 Perplexity 是一款面向开发者与临床信息学研究人员设计的轻量级症状语义推理工具&#xff0c;其核心能力在于将自然语言描述的症状短语映射至标准化医学本体&#xff08;如…...

Spring Validation嵌套校验踩坑实录:用@Valid搞定订单里商品列表的深度验证

Spring Validation嵌套校验实战&#xff1a;用Valid解决订单商品列表的深度验证难题 电商系统中订单创建接口的复杂性往往体现在数据结构的嵌套层级上。一个典型的订单对象不仅包含基础订单信息&#xff0c;还会内嵌商品列表、优惠券、收货地址等多个子对象。当后端接收到这样的…...

零基础想学挖漏洞?普通人也能看懂的网络安全入门学习路线(建议收藏)

很多人对网络安全的第一印象&#xff1a;黑客、代码、入侵、黑框代码疯狂滚动、随手就能让ATM吐钱&#xff0c;随手一个漏洞几千上万&#xff0c;日进斗金&#xff01;&#xff01;&#xff01; 但真实情况是&#xff1a;90%零基础新人不会挖漏洞&#xff0c;不是天赋不够&…...

手把手教你用STM32CubeMX和Keil MDK玩转极海APM32F072RB(附ST-LINK避坑指南)

从STM32到极海APM32F072RB的平滑迁移实战指南 当ST芯片供货紧张时&#xff0c;许多工程师开始将目光转向国产替代方案。极海半导体的APM32系列因其与STM32的高度兼容性而备受关注。作为曾经深度依赖STM32生态的开发者&#xff0c;我在最近三个项目中成功将APM32F072RB投入实际应…...

终极USB安全弹出解决方案:告别Windows设备占用烦恼

终极USB安全弹出解决方案&#xff1a;告别Windows设备占用烦恼 【免费下载链接】USB-Disk-Ejector A program that allows you to quickly remove drives in Windows. It can eject USB disks, Firewire disks and memory cards. It is a quick, flexible, portable alternativ…...

B站缓存视频拯救计划:3分钟实现m4s转MP4永久保存

B站缓存视频拯救计划&#xff1a;3分钟实现m4s转MP4永久保存 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾因B站视频突然下架而痛失珍…...

网站导航设计全攻略:4种常见布局方式,教你打造极致用户体验

在浏览网站时&#xff0c;你是否曾因找不到入口而感到焦躁&#xff1f;优秀的导航设计&#xff0c;就像一座灯塔&#xff0c;能在瞬间为用户指明方向。它不仅是网站的骨架&#xff0c;决定了信息的流转效率&#xff0c;更是用户体验的基石。一个逻辑清晰的导航系统&#xff0c;…...