shell判断参数值是否在数组内的方法
比如定义数组:
arr=("one" "tow" "thr" "three" "four")
1. 模糊匹配,也可以理解为子集匹配
if [[ "${arr[*]}" =~ ${var} ]]; then
# do something
fi
优点是比较简洁,缺点是匹配不精确。比如参数为:th, thr, thre, three 均满足执行条件。
2. 精确匹配,需要函数实现:
unction contains() {
local n=$#
local value=${!n}
for ((i=1;i < $#;i++)) {
if [ "${!i}" == "${value}" ]; then
echo "y"
return 0
fi
}
echo "n"
return 1
} A=("one" "two" "three four")
if [ $(contains "${arr[@]}" "thre") == "y" ]; then
echo "contains thre"
fi
if [ $(contains "${arr[@]}" "three") == "y" ]; then
echo "contains three"
fi
必须完整匹配arr数组里面的一项时才满足执行条件,所以很多场景下精确匹配更实用。
shell判断参数值是否在数组内的方法的更多相关文章
- js jquery 判断元素是否在数组内
js jquery 判断元素是否在数组内 一,js方法 var arr = ["a", "b", "c"]; // js arr.index ...
- JS判断元素是否在数组内
//判断元素是否在数组内 function contains(arr, obj) { var i = arr.length; while (i--) { if (arr[i] === obj) { r ...
- 0513JS数组内置方法、数学函数、时间函数
|数组中常用的内置方法|-push()与pop()|--push()是往数组的尾部添加,同时返回新数组的长度 var attr = [1,2,3,4,5];var attr2 = [6,7,8,9,0 ...
- java 判断元素是否在数组内
一,先转为List,再使用contains()方法 String[] strArr = new String[] { "a", "b", "c&quo ...
- js jquery 判断元素是否在数组内(转)
一,js方法 var arr = ["a", "b", "c"]; // js arr.indexOf("c") var ...
- C#+AE 判断点是否在面内的方法
整体思路:射线法. ①:先判断点的X和Y坐标和多边形的Xmin,Xmax,Ymin,Ymax的关系.若超出了这四个值,则一定在多边形外: ②:若不符合上述条件,则继续.向左做线段,线段的左顶点的X坐标 ...
- js数组内置方法
var arr = ['A','B','C','D']; length 计算数组的长度 arr.length//4 indexOf() 搜索一个指定的元素的位置 arr.indexOf('C'); ...
- js中数组内置方法
var arr = ['A','B','C','D']; length 计算数组的长度 arr.length//4 indexOf() 搜索一个指定的元素的位置 arr.indexOf('C');// ...
- EntityFramework 和 linq 判断是否在指定时间段内的方法
EntityFramework: System.Data.Objects.EntityFunctions.DiffDays(DateTime.Now, inputTime)判断当前时间与指定时间相差多 ...
随机推荐
- PicLite 开发日志 v0.0.2
PicLite 开发日志 (v0.0.2) 感谢您阅读本片文章! Gitee 地址:https://gitee.com/XiaoQuQuSD/pic-lite. 新增功能 添加复制 url 的格式选项 ...
- ValidForm5.3.2 忽略表单项校验详解
ValidForm 官方文档 项目的需求是这样的:一个checkbox,一个input,选中checkbox的时候,需要校验input,取消选中的时候,不要校验input. <input typ ...
- OA办公软件篇(三)—审批流
背景 作用 迭代历程 具体实现 写在最后 背景 在前面两篇文章中,我们分别讲了组织架构和权限管理,今天我们来讲一个跟组织架构关系比较密切的功能-审批流. 审批流,通俗来说就是一个完整的审批流程,是 ...
- ucore lab2 物理内存管理 学习笔记
总的来讲把的LAB1代码逻辑理顺后再往后学就轻松了一大截.LAB2过遍课程视频,再多翻翻实验指导书基本上就没遇到啥大坎儿.对这节学得东西做个总结就是一张图: 练习0:填写已有实验 本实验依赖实验1.请 ...
- linux系统如何查看内核版本、操作系统版本等信息
有时候需要查看linux系统的内核版本,可以有多种方法,方法如下:(下面以优麒麟系统为例) 方法1: 打开mate终端,在命令行输入以下命令: uname -a 运行效果如下: 如果只查看内核 ...
- iptables系列教程(一)| iptables入门篇
一个执着于技术的公众号 前言 在早期的 Linux 系统中,默认使用的是 iptables 配置防火墙.尽管新型 的 firewalld 防火墙已经被投入使用多年,但是大量的企业在生产环境中依然出于各 ...
- keepalived安装及配置文件详解
一个执着于技术的公众号 在上一篇文章中,我们对Keepalived进行了简单入门学习: Keepalived入门学习 今天我们继续学习Keepalived服务. 一.安装Keepalived服务 两种 ...
- 使用client-go实现自定义控制器
使用client-go实现自定义控制器 介绍 我们已经知道,Service对集群之外暴露服务的主要方式有两种:NodePort和LoadBalancer,但是这两种方式,都有一定的缺点: NodePo ...
- 项目完成小结 - Django3.x版本 - 开发部署小结 (2)
前言 好久没更新博客了,最近依然是在做之前博客说的这个项目:项目完成 - 基于Django3.x版本 - 开发部署小结 这项目因为前期工作出了问题,需求没确定好,导致了现在要做很多麻烦的工作,搞得大家 ...
- 第06组 Beta冲刺 (2/5)
目录 1.1 基本情况 1.2 冲刺概况汇报 1.郝雷明 2. 方梓涵 3.杜筱 4.黄少丹 5. 董翔云 6.鲍凌函 7.詹鑫冰 8.曹兰英 9.曾丽莉 10.吴沅静 1.3 冲刺成果展示 1.1 ...