在做项目的CI/ CD 时,难免会用到 Travis.CI 和 AppVeyor 以及 CodeCov 来判断测试的覆盖率,今天突然遇到了一个问题,就是我需要在每次做测试的时候判断是否存在一个环境变量,我对于 script 脚本半只半解还不太懂的状态,我最初的打算是这样写的

if [-z $ENV_VALUE && -z $ENV_VALUE]; then
#do something
else
#do another
fi

没想到,在windows上跑着正常的,编写到 .yml 文件的 script 中时,在 GitHub 上就报错了,说-z was unexcepted at this time. 看的我真的是一脸懵啊,什么鬼。去Google 了一下,也没有找到什么可靠的答案,于是我去翻了翻其他语言的项目中是如何写 .yml 文件的,刚开始其实我也去看了看,只记得里面有个这个命令 test -z $ENV_VALUE -a -z $ENV_VALUE 。开始没有太注意,后来发现这个 test 命令我在写脚本时怎么从来没见过呢,去Google 了一下,发现新大陆。

这个 Test 命令的解释是:

The test command can be used on the Linux command line to compare one element against another, but it is more commonly used in BASH shell scripts as part of conditional statements which control logic and program flow

接下来就简单介绍一下这个神器的用法,比如下面这个基础命令

test 1 -eq 2 && echo "yes" || echo "no"

上面这段命令的意思是 1 等于 2 吗? 如果等于就输出 yes 否则输出 no 显然答案是 no

具体解剖开来就是

  1. test 表示的你将要进行一个比较
  2. 1 是你第一个要比较的数据
  3. -eq 表示 equal 就是等于
  4. 2 是你第二个要比较的数据
  5. && 这个符号后的语句会在表达式为 true时执行
  6. || 这个符号后面的语句会在表达式为 false的时候执行

当比较的是数字时,还可以又以下其他符号:

  1. -eq 还有其他比较的符号
  2. -ge : 表示 大于等于
  3. -gt: great than 大于
  4. -le: less equal than 小于等于
  5. -lt: 小于
  6. -ne: 不等于

当比较的是 Text时

  1. = :表示的是 string 1 和 stirng2 匹配,相等
  2. != :和上面相反
  3. -n :表示这个字符串的长度大于 0
  4. -z: 表示这个字符串长度等于 0

当比较 string 类型或者是 file 文件都有相应的符号来进行比较,对于要在 bash 上脚本中进行比较很是方便。

对于我之前想要在 .yml 文件中进行比较判断的语句,则可以写成以下这个样了:


test -z $ENV_VALUE1 -a -z $ENV_VALUE2 && dotnet test --filter Category = category1 || dotnet test --filter Category = all # -a 代表的是 and

是不是 So easy 啊,赶紧去试试!

参考文章:

How to Use Test Conditions Within a Bash Script

Yaml 文件中Condition If- else 判断的问题的更多相关文章

  1. day11_单元测试_读取yaml文件中的用例,自动获取多个yaml文件内容执行生成报告

    一.使用.yaml格式的文件直接可以存放字典类型数据,如下图,其中如果有-下一行有缩进代表这是个list,截图中是整体是一个list,其中有两部分,第二部分又包含另外一个list 二.单元测试:开发自 ...

  2. 新版的K8S中的flannel.yaml文件中要注意的细节

    部署flannel作为k8s中的网络插件,yaml文件都大小同异. 但在要注意以下细节. 以前,只需要前面master判断. 现在也需要有not-ready状态了. tolerations: - ke ...

  3. YAML文件中在单一文件中区分多个文件

    1.在单一文件中,可用连续三个连字号(---)区分多个文件. 2.另外,还有选择性的连续三个点号( ... )用来表示文件结尾. 题外:YAML其实语法很多也很灵活,但是针对Spring支持的语法其实 ...

  4. Python--代码1(接口测试:测试用例从数据库读取写到yaml文件中)

    一. 从数据库中读取全部接口,并写入yaml文件 数据库中的数据存储格式如下图: import pymysql import os import json # from ruamel import y ...

  5. HtmlWebpackPlugin用的html的ejs模板文件中如何使用条件判断

    折腾: [已解决]给react-hot-boilerplate中的index.html换成用HtmlWebpackPlugin自动生成html 期间,已经有了思路了,但是不知道如何在ejs的html中 ...

  6. Kubernetes的yaml文件中command的使用

    前面说了init容器initContainers,这主要是为应用容器做前期准备工作的,一般都会用到shell脚本,这就会用到command,这里写写command的用法. command就是将命令在创 ...

  7. k8s yaml 文件中字段类型:

    1.<Object>    对象类型 metadata: name: namespace: 2.<[]Object>  对象列表类型 containers: -  name: ...

  8. k8s中新建一个namespace和harborsecret的yaml文件

    注意哟, 不同的harborsecret,在不同的namespace中,是不共用的. 也就是说,如果在default名字空间中,创建了一个docker login secret, 在其它名字空间中,是 ...

  9. [Kubernetes]yaml文件详解

    应前一段时间夸下的海口:[Kubernetes]如何使用yaml文件使得可以向外暴露服务,说过要写一篇关于yaml文件详解的文章出来的,今天来总结一下.yaml文件用在很多地方,但是这里以介绍在Kub ...

随机推荐

  1. python_flask 基础巩固(自定义URL转换器)

    自定义URL转换器(在BaseConverter类外定义)from werkzeug.routing import BaseConverter定义类继承BaseConverter 实现类app.url ...

  2. python opencv 处理文件、摄像头、图形化界面

    转换成RGB import cv2 import numpy as ny img = ny.zeros( ( 3 , 3 ),ny.float32) img=cv2.cvtColor(img,cv2. ...

  3. js获取复选框值

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. 00SQL表字段说明

    SELECT d.name 表名 , a.colorder 字段序号 , a.name 字段名 , ISNULL(g.[value], '') AS 字段说明 , ( CASE WHEN COLUMN ...

  5. EmguCV使用Stitcher类来拼接图像

    using System; using System.Windows; using System.Collections.Generic; using System.ComponentModel; u ...

  6. 关于Spring Cloud的核心特性

    SOA和微服务的区别 其实服务化架构已经可以解决大部分企业的需求了,那么我们为什么要研究微服务呢?先说说它们的区别: 微服务架构强调业务系统需要彻底的组件化和服务化,一个组件就是一个产品,可以独立对外 ...

  7. python写的压缩软件

    import tkinterimport tkinter.filedialogimport osimport zipfileimport tkinter.messagebox #创建住窗口root = ...

  8. 迷宫-BFS

    迷宫问题 Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status Descript ...

  9. HBase相关的一些点

    1.在运行Hbase时,如果遇到出错之后: 可以通过{HBASE_HOME}目录,我的是在/usr/soft/hbase下的logs子目录中的日志文件查看错误原因.2.启动关闭Hadoop和HBase ...

  10. 《用Python解决数据结构与算法问题》在线阅读

    源于经典 数据结构作为计算机从业人员的必备基础,Java, c 之类的语言有很多这方面的书籍,Python 相对较少, 其中比较著名的一本 problem-solving-with-algorithm ...