Yaml 文件中Condition If- else 判断的问题
在做项目的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
具体解剖开来就是
- test 表示的你将要进行一个比较
- 1 是你第一个要比较的数据
- -eq 表示 equal 就是等于
- 2 是你第二个要比较的数据
- && 这个符号后的语句会在表达式为 true时执行
- || 这个符号后面的语句会在表达式为 false的时候执行
当比较的是数字时,还可以又以下其他符号:
- -eq 还有其他比较的符号
- -ge : 表示 大于等于
- -gt: great than 大于
- -le: less equal than 小于等于
- -lt: 小于
- -ne: 不等于
当比较的是 Text时
- = :表示的是 string 1 和 stirng2 匹配,相等
- != :和上面相反
- -n :表示这个字符串的长度大于 0
- -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 判断的问题的更多相关文章
- day11_单元测试_读取yaml文件中的用例,自动获取多个yaml文件内容执行生成报告
一.使用.yaml格式的文件直接可以存放字典类型数据,如下图,其中如果有-下一行有缩进代表这是个list,截图中是整体是一个list,其中有两部分,第二部分又包含另外一个list 二.单元测试:开发自 ...
- 新版的K8S中的flannel.yaml文件中要注意的细节
部署flannel作为k8s中的网络插件,yaml文件都大小同异. 但在要注意以下细节. 以前,只需要前面master判断. 现在也需要有not-ready状态了. tolerations: - ke ...
- YAML文件中在单一文件中区分多个文件
1.在单一文件中,可用连续三个连字号(---)区分多个文件. 2.另外,还有选择性的连续三个点号( ... )用来表示文件结尾. 题外:YAML其实语法很多也很灵活,但是针对Spring支持的语法其实 ...
- Python--代码1(接口测试:测试用例从数据库读取写到yaml文件中)
一. 从数据库中读取全部接口,并写入yaml文件 数据库中的数据存储格式如下图: import pymysql import os import json # from ruamel import y ...
- HtmlWebpackPlugin用的html的ejs模板文件中如何使用条件判断
折腾: [已解决]给react-hot-boilerplate中的index.html换成用HtmlWebpackPlugin自动生成html 期间,已经有了思路了,但是不知道如何在ejs的html中 ...
- Kubernetes的yaml文件中command的使用
前面说了init容器initContainers,这主要是为应用容器做前期准备工作的,一般都会用到shell脚本,这就会用到command,这里写写command的用法. command就是将命令在创 ...
- k8s yaml 文件中字段类型:
1.<Object> 对象类型 metadata: name: namespace: 2.<[]Object> 对象列表类型 containers: - name: ...
- k8s中新建一个namespace和harborsecret的yaml文件
注意哟, 不同的harborsecret,在不同的namespace中,是不共用的. 也就是说,如果在default名字空间中,创建了一个docker login secret, 在其它名字空间中,是 ...
- [Kubernetes]yaml文件详解
应前一段时间夸下的海口:[Kubernetes]如何使用yaml文件使得可以向外暴露服务,说过要写一篇关于yaml文件详解的文章出来的,今天来总结一下.yaml文件用在很多地方,但是这里以介绍在Kub ...
随机推荐
- 解答VS2013编译报错不准确是什么原因
1.当程序在错误时,VS2013编译报出的错误有时不会一起全部报出,而是按错误的英文首字母逐个报出的 2.如果报错的信息双击点过去查看时又发现无明显错误问题时,这个这个时候可以是VS编译的缓存问题,这 ...
- svn提交出现错误 svn: Working copy 'D:\...'locked.
更新svn内容时出现如下的错误: svn: Working copy 'D:\tools\Workspaces\EclipseForNewSTLJ\javashop\b2c\src\main\weba ...
- EF学习笔记(十) 处理并发
总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇:EF学习笔记(九):异步处理和存储过程 本篇原文链接:Handling Concurrency Concurrency ...
- 转 Refresh Excel Pivot Tables Automatically Using SSIS Script Task
Refresh Excel Pivot Tables Automatically Using SSIS Script Task https://www.mssqltips.com/sqlservert ...
- MFC常见问题总结
1. c++中的函数前面加个LRESULT是什么意思啊?在微软vc提供的头文件中有定义在winnt.h中typedef long LONG;在windef.h中typedef LONG LRESULT ...
- 7 week work
Dom和Bom的起源.方法.内容.应用. Dom:起源:首先听到Virtual DOM这个概念应该来自于React,并且在不了解时觉得这个概念是一个逼格特别高的词.其实任何技术的诞生都是有相应的历史的 ...
- 前端 高级 (二十五)vue2.0项目实战一 配置简要说明、代码简要说明、Import/Export、轮播和列表例子
一.启动服务自动打开浏览器运行 二.配置简要说明 1.node_modules 安装好的依赖文件,中间件等,所在位置 2.package.jason 配置当前项目要安装的中间件和依赖文件 { &quo ...
- wechat.php
<?php/***Author @zhongbo * 步骤说明* 1,微信服务器返回一个会话ID* 2.通过会话ID获得二维码* 3.轮询手机端是否已经扫描二维码并确认在Web端登录* 4.访问 ...
- 升讯威微信营销系统开发实践:(1)功能概要与架构设计( 完整开源于 Github)
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...
- Git使用详细教程(3):git add, git commit详解
在使用git之前,我们首先要初始化一个git管理的仓库,这里以博客(blog)为例 git init blog 我们进入目录,执行git status查看git状态,可以看到一个新的git管理的项目目 ...