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

Shell编程之条件判断语句

目录

一、条件判断

        1、test命令

        2、文件测试

        3、整数值比较

        4、字符串判断

5、逻辑测试

二、if语句

1、if单分支语句

2、双分支语句

3、多分之语句

4、case 分支语句


一、条件判断

        Shell环境根据命令执行后的返回状态值(echo $?)来判断是否执行成功,当返回值为0表示成功或正确,返回值为非0值表示失败或异常。(补充:Linux判断依据在别的编程语言中是反过来的,如java假为0,真为1)

        1、test命令

  有两种方式   

  •          test 条件表达式
  •          [ 条件表达式]     [  ] 相当于test

例子:

0表示成立   其他值表示不成立

        2、文件测试

  •         test 选项 文件/目录路径          test 选项  $变量
  •         [ 选项 文件/目录路径 ]           [ 选项  $变量 ]

     常用的操作符号有

-e测试目录或文件是否存在(Exist)
-d测试是否为目录(Directory)
-f测试是否为文件(File)
-r测试当前用户是否有权限读取(Read)
-w测试当前用户是否有权限写入(Write)
-x测试是否设置有可执行(Excute)权限。
-L测试是否为符号链接

        例子

-e

-d

-r

-w

-x

-L

        3、整数值比较

  •         格式:[ 整数变量1 操作符 整数变量2 ]

        常用的操作符

-eq等于
-ne不等于
-gt大于
-lt小于 
-le小于等于
-ge大于等于

例子

-eq

-ne

-gt

-lt

-le

-ge

        4、字符串判断

        格式

  •         test "字符串1" == "字符串2" 
  •          [ "字符串1" == "字符串2" ]

例子

         [[ "字符串1" =~ "字符串2 ]]    # 判断字符串1是否包含字符串2

例子

  •         test -z "字符串"      test -z "$变量"   [ -z "$变量" ]     #判断字符串或变量是否为空
  •         test -n "字符串"      test -n "$变量"   [ -n "$变量" ]     #判断字符串或变量是否有字符串

例子

5、逻辑测试

  •         格式1:[  表达式1  ]  操作符  [  表达式2  ]  
  •         格式2:命令1  操作符  命令2

常用操作符 -a或者&&  而且的意思

                 -o或者 ll  或者的意思

                     !: 逻辑  fou  !代表取反

  •         [ 表达式1 ] && [ 表达式2 ] ;[ 表达式1 -a 表达式2 ] ;[[ 表达式1 && 表达式2 ]]

也可以这样表达

或者的意思

!取反

二、if语句

1、if单分支语句

测试1

判断  a=1  b=2   如果b大于a 说明对的

2、双分支语句

格式

        if [ 条件判段语句]

        then

        echo “ xxxx”

        else

        echo "xxxx"

3、多分之语句

格式:

        if [ 条件表达式]

then

        echo "xxxxx"

elif [ 条件表达式]

then

echo " xxxx"

elif [ 条件表达式]

then

echo " xxxx"

else

echo "xxxx"

例子

4、case 分支语句

        

相关文章:

  • 为什么说kafka没办法保证数据不丢?
  • 如何解决爬虫的IP地址受限问题?
  • flutter使用dbus插件时,在终端无法使用“dart-dbus”命令
  • PostgreSQL自带的命令行工具25- ecpg
  • onload和onunload有什么区别(代码举例说明)
  • 【元壤教育】全国最具价值的AIGC培训课程学前须知
  • 如何在 Git 中处理和解决分支合并冲突?
  • js如何遍历FormData的值
  • C++初阶学习第十弹——探索STL奥秘(五)——深入讲解vector的迭代器失效问题
  • 分布式异步框架celery + Redis 安装配置
  • 告别繁琐,一键同步!聚道云助力企业人力资源大升级
  • 当代人工智能三教父——深度学习三巨头
  • 202473读书笔记|《但愿呼我的名为旅人:松尾芭蕉俳句300》——围炉夜话,身顿心安,愿每个人都能在爱里自由驰骋
  • yolov8实战第九天——pyqt5-yolov8实现道路病害识别系统(参考论文(6000+字)+环境配置+完整部署代码+代码使用说明+训练好的模型+数据集)
  • Redis数据库知识点
  • Angular 响应式表单之下拉框
  • Codepen 每日精选(2018-3-25)
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • javascript 总结(常用工具类的封装)
  • java多线程
  • JS变量作用域
  • opencv python Meanshift 和 Camshift
  • PAT A1120
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • spark本地环境的搭建到运行第一个spark程序
  • text-decoration与color属性
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 成为一名优秀的Developer的书单
  • 对象引论
  • 规范化安全开发 KOA 手脚架
  • 回顾2016
  • 看域名解析域名安全对SEO的影响
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 如何学习JavaEE,项目又该如何做?
  • 深度解析利用ES6进行Promise封装总结
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 探索 JS 中的模块化
  • 想写好前端,先练好内功
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 协程
  • 怎么把视频里的音乐提取出来
  • 追踪解析 FutureTask 源码
  • ​学习一下,什么是预包装食品?​
  • #pragma once与条件编译
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (C++17) std算法之执行策略 execution
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (一)基于IDEA的JAVA基础10
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net Application的目录
  • .NET CF命令行调试器MDbg入门(一)