热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Shell编程】条件判断

系列文章【Shell编程】Shell中的正则表达式【Shell编程】字符截取命令cut、printf命令【Shell编程】字符截取命令awk、sed命令目录系列文章按照文件类型进

系列文章

【Shell编程】Shell中的正则表达式
【Shell编程】字符截取命令cut、printf命令
【Shell编程】字符截取命令awk、sed命令




目录

  • 系列文章
  • 按照文件类型进行判断
    • 实例
      • 测试上一条命令是否执行成功
      • 编写一个shell脚本来判断文件是否存在
  • 按照文件权限进行判断
    • 实例
      • 测试文件是否存在输出yes no
  • 俩个文件之间进行比较
    • 实例
      • 测试俩文件是否为硬链接
  • 俩个整数之间比较
    • 实例
      • 测试整数比较
  • 字符串的判断
    • 实例
      • 测试 字符串是否为空
      • 测试俩变量是否相等
  • 多重条件判断
    • 实例
      • 判断变量是否有值,且是否大于23


按照文件类型进行判断


测试选项作用
-b 文件判断该文件是否存在,并且是否为块设备文件(是块设备文件为真)
-c 文件判断该文件是否存在,并且是否为字符设备文件(是字符设备文件为真)
-d 文件判断该文件是否存在,并且是否为目录文件(是目录为真)
-e 文件判断该文件或者文件夹是否存在,(存在为真)
-f 文件判断该文件是否存在,并且是否为普通文件(是普通文件)
-L 文件判断该文件是否存在,并且是否为符号链接文件(是符号链接文件为真)
-p 文件判断该文件是否存在,并且是否为管道文件(是管道文件为真)
-s 文件判断该文件是否存在,并且是否为非空(非空为真)
-S 文件判断该文件是否存在,并且是否为套接字文件(是套接字文件为真)

命令:test [-文件]

通过echo $?判断上一条命令执行是否成功 0-成功 1-不成功


实例


测试上一条命令是否执行成功

asdfasdf文件是不存在的,所以会执行失败。
在这里插入图片描述


编写一个shell脚本来判断文件是否存在

注意:[ ]俩边必须流一个空格
实现代码如下:

#!/bin/bashif [ -e ./temp ]
thenecho "aa"
elseecho "不存在"
fi

通过cat命令查看:
在这里插入图片描述
执行脚本:
在这里插入图片描述


按照文件权限进行判断


测试选项作用
-r 文件判断该文件是否存在,并且该文件是否拥有读权限(有读权限为真)
-w 文件判断该文件是否存在,并且该文件是否拥有写权限(有写权限为真)
-x 文件判断该文件是否存在,并且该文件是否拥有执行权限(有执行权限为真)
-u 文件判断该文件是否存在,并且该文件是否拥有SUID权限(有SUID权限为真)
-g 文件判断该文件是否存在,并且该文件是否拥有SGID权限(有SGID权限为真)
-k 文件判断该文件是否存在,并且该文件是否拥有SBit权限(有SBit权限为真)

实例


测试文件是否存在输出yes no

命令:[ -w /root/test/student.txt ] && echo yes || echo no
只要有w权限就返回yes ,不管是谁有w权限
在这里插入图片描述


俩个文件之间进行比较


测试选项作用
文件1 -nt 文件2判断文件1的修改时间是否比文件2的新(新返回真)
文件1 -ot 文件2判断文件1的修改时间是否比文件2的旧(旧则返回真)
文件1 -ef 文件2判断文件1是否和文件2的Inode号一致,可以理解为俩个文件是否为同一个文件。这个判断用于判断硬链接是很好的方法

实例


测试俩文件是否为硬链接

说明 i节点号一样就是硬链接
在这里插入图片描述

比较是俩文件是否为硬链接
命令: [ student.txt -ef st2 ] && echo yes || echo no
在这里插入图片描述


俩个整数之间比较


测试选项作用
整数 -eq 整数2判断俩整数释放相等(相等为真)
整数1 -ne 整数2不相等为真
整数1 -gt 整数2整数1 大于 整数2 为真
整数1 -lt 整数2整数1 小于 整数2 为真
整数1 -ge 整数2整数1 大于等于 整数2 为真
整数1 -le 整数2整数1 小于等于 整数2 为真

实例


测试整数比较

命令:[ 23 -gt 22 ] && echo yes || no
在这里插入图片描述


字符串的判断


测试选项作用
-z 字符串判断字符串是否为空 (空为真)
-n 字符串判断字符串是否为非空(非空为真)
字串1==字串2俩字串相等为真
字串1!=字串2俩字串不相等为真

实例


测试 字符串是否为空

命令:

name=zhangmeng
[ -z $name ] && echo yes || no

测试效果
在这里插入图片描述


测试俩变量是否相等

命令:

aa=11
bb=22
[ $aa == $bb ] && echo yes || echo no

测试效果
在这里插入图片描述


多重条件判断


测试选项作用
判断1 -a 判断2逻辑与,判断1和判断2都成立,最终的结果才为真
判断1 -o 判断2逻辑或,判断1和判断2有一个成立,最终结果就为真
!判断逻辑非,使原始的判断式取反

实例


判断变量是否有值,且是否大于23

命令:

aa=11
[ -n $aa -a $aa -gt 23 ] && echo yes || echo no

测试效果
在这里插入图片描述
命令:

aa=24
[ -n $aa -a $aa -gt 23 ] && echo yes || echo no

测试效果
在这里插入图片描述


推荐阅读
  • 文章目录一、awk简介二、awk的两种形式语法格式1options:2command:三、awk工作原理四、记录与字段相关内部变量:五、格式化输出:printf函数六、awk模式和 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
  • Java程序员必会的40个Linux命令!
    你知道的越多,不知道的就越多,业余的像一棵小草!你来,我们一起精进!你不来,我和你的竞争对手一起 ... [详细]
  •   一直对shell脚本有一种特殊的感觉,因此花了一段时间学习,本人擅长C语言编程,深受C语言荼毒,在学习其他任何类似于编程语言的东东的时候,都会不自觉的与C进行对比,因此对于shell中的变量的作用 ... [详细]
  • BashShell作为Linux的指定合作伙伴我们已经再熟悉不过了,使用Bash可以快速编写简单的脚本方便我们的日常比如善用vim,awk和sed三剑客,也可以创建十分复杂的逻辑, ... [详细]
  • linux 循环 cpu使用率脚本,Linux Shell脚本监视CPU利用率,达到设置的CPU利用率时发送电子邮件...
    有很多开源监控工具可用于监控Linux系统性能,当系统达到给定的阈值限制时,它将发送电子邮件警报。它监视CPU利用率、内存利用率、交换利用率、磁盘空间利 ... [详细]
  • Shell编程(三)bash数学运算
    本文介绍shell中的expr和bash自带的 ... [详细]
author-avatar
mobiledu2502898347
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有