检查 Bash 数组是否包含值

2023-12-04

在 Bash 中,测试数组是否包含某个值的最简单方法是什么?


这种方法的优点是不需要循环所有元素(至少不需要显式循环)。但是由于array_to_string_internal() in array.c仍然循环遍历数组元素并将它们连接成一个字符串,它可能不会比建议的循环解决方案更有效,但它更具可读性。

if [[ " ${array[*]} " =~ " ${value} " ]]; then
    # whatever you want to do when array contains value
fi

if [[ ! " ${array[*]} " =~ " ${value} " ]]; then
    # whatever you want to do when array doesn't contain value
fi

请注意,如果您要搜索的值是带有空格的数组元素中的单词之一,则会给出误报。例如

array=("Jack Brown")
value="Jack"

正则表达式会将“Jack”视为在数组中,即使它不在数组中。所以你必须改变IFS以及正则表达式上的分隔符(如果您仍想使用此解决方案),如下所示

IFS="|"
array=("Jack Brown${IFS}Jack Smith")
value="Jack"

if [[ "${IFS}${array[*]}${IFS}" =~ "${IFS}${value}${IFS}" ]]; then
    echo "true"
else
    echo "false"
fi

unset IFS # or set back to original IFS if previously set

这将打印“假”。

显然这也可以用作测试语句,允许将其表示为一行

[[ " ${array[*]} " =~ " ${value} " ]] && echo "true" || echo "false"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查 Bash 数组是否包含值 的相关文章

  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之
  • 将数组拆分为特定数量的块

    我知道array chunk 允许将数组拆分为多个块 但块的数量根据元素的数量而变化 我需要的是始终将数组拆分为特定数量的数组 例如 4 个数组 以下代码将数组分为 3 个块 两个块各有 2 个元素 1 个块有 1 个元素 我想要的是将数组
  • JavaScript 数组扩展语法的时间复杂度是多少?

    我想知道在 JavaScript 中使用数组扩展的时间复杂度是多少 是线性 O n 还是常数 O 1 下面的语法示例 let lar Math max nums 传播称为 Symbol iterator 有关对象的属性 对于数组 这将迭代数
  • 泛型、数组和 ClassCastException

    我想这里一定发生了一些我不知道的微妙事情 考虑以下 public class Foo
  • char*str={"foo",...} 和 char str[][5]={"foo",...} 数组定义之间有什么区别?

    Case 1 当我写作时 char str what is this then str i newstring 是有效的 而str i j j 是无效的 Case 2 当我写作时 char str 5 what is this then s
  • Angular JS 中的数组

    我是 Angular JS 新手 我正在将元素推送到数组中 然后想使用 ng repeat 在 html 中显示 scope groupedMedia Adding elements through a for loop scope gro
  • 使用字符串中的变量名称访问变量值,R

    Intro 一个数据集有大量的age year变量 age 1990 age 1991 etc 我有一个字符串值数组length age years 表示这些变量 使得age years 1 回报 age 1990 etc Need 我想搜
  • 从 n,k 维矩阵数组中减去 n,k 维矩阵

    如果我有一个数组A A lt array 0 c 4 3 5 for i in 1 5 set seed i A i lt matrix rnorm 12 4 3 如果我有矩阵 B set seed 6 B lt matrix rnorm
  • Linux 中的动态环境变量?

    Linux 中是否可以通过某种方式拥有动态环境变量 我有一个网络服务器 网站遵循以下布局 site qa production 我想要一个环境变量 例如 APPLICATION ENV 当我在 qa 目录中时设置为 qa 当我在生产目录中时
  • Java-如何将黑白图像加载到二进制中?

    我在 FSE 模式下使用 Java 和 swing 我想将完全黑白图像加载为二进制格式 最好是二维数组 并将其用于基于掩码的每像素碰撞检测 我什至不知道从哪里开始 过去一个小时我一直在研究 但没有找到任何相关的东西 只需将其读入Buffer
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • 如何使用shell脚本从json字符串中grep特定字段值[重复]

    这个问题在这里已经有答案了 下面是文件中可用的 JSON 字符串 我需要从中提取值status在 shell 脚本中 预期输出 status success 响应 json eventDate null dateProccessed nul
  • 如何循环结构体数组并显示所有键值

    我正在循环结构数组并尝试分配和存储所有键值 如果我将内循环包裹起来
  • 显示和随机化 php 数组

    我有一个显示结果的数组 如下所示 Array 0 gt 71 1 gt 56 2 gt 64 3 gt 82 4 gt 90 5 gt 80 6 gt 65 7 gt 62 8 gt 14 9 gt 3 我的代码是 while row my
  • 获取变量的名称作为输入并使用该名称更改变量

    我从脚本用户那里获取变量的名称作为第一个参数 并将该变量的值回显到控制台 bin bash variablename 1 echo The value of variablename is variablename 这太棒了 我无法开始工作
  • 使用静态指针的动态内存分配

    有人可以向我解释一下为什么下面的代码会这样工作吗 这里我已经初始化了outd作为文件中的静态指针code2 c 然后我动态地为其分配内存malloc 从单独文件中的主函数中一次又一次地调用它code1 c 它看起来整个数组以静态方式运行 因
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • PHP条件,如果当前页面,则链接突出显示[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个带
  • 如何将变量插入 PHP 数组?

    我在网上查了一些答案 但都不是很准确 我希望能够做到这一点 id result id info array id Example echo info 0 这有可能吗 您需要的是 不推荐 info array id Example varia

随机推荐

  • 线程共享 Perl

    我写了一段代码 我需要使它成为多线程 一切正常 但每个循环重复 4 次 use LWP UserAgent use HTTP Cookies use threads use threads shared 1 threads 4 my gro
  • MSDN 文档错误? “如果该过程是共享的,则其所有局部变量都会自动共享。这包括静态变量。”

    我正在查看有关 VB Net 很少使用的 MSDN 文档Static局部变量的关键字 我的问题是not关于静态的工作原理 我个人计划避免使用它 因为它似乎会给未来没有注意到副作用的程序员带来悲伤 我的问题是关于文档中的这个声明 任何局部变量
  • 将 Bootstrap 类名添加到 Typo3 表

    是否可以将 Bootstrap 表类添加到 Typo3 v6 1 中创建的表中 我在创建 Table 类型的页面时注意到设置 Additional CSS Class 但是 它不会向我的表添加任何类 它不支持添加多个类 逗号 空格等在保存时
  • 如何使用新的 Material Design 图标主题:轮廓、圆形、双色调和锐利?

    谷歌已经对其进行了改造材料设计图标有 4 个新的预设主题 轮廓 圆形 双色调和锐利 除了常规的填充 基线 theme 但不幸的是 它没有说明如何使用新主题 我去过通过 Google Web Fonts 使用它通过包含链接 然后使用所需的图标
  • 关闭 docker-compose 后 Docker 卷不保留数据

    我正在使用 docker compose 组合 2 个图像 tomcat 与我的应用程序和数据库 postgres 我的撰写文件如下所示 version 3 services tomcat build tomcat img ports 80
  • as_bytes 函数的精确定义

    我在阅读时发现了这个函数 但找不到它的定义CPP参考 Bjarne stroustrup 的编程原理 它的使用方式如下 ifs read as bytes x sizeof int 我明白如何read有效 但你仍然可以帮助我to bytes
  • 在 webkit 浏览器中使用 标签时,带有嵌入位图的 SVG 不显示位图

    我正在尝试使用带有嵌入位图的 SVG 作为导航元素 这个想法是让它更加适合移动设备 我已经为 IE8 及更低版本设置了 PNG 后备 不知何故 嵌入的位图不会在基于 webkit 的浏览器中显示 没有嵌入位图的 SVG 显示就可以了 我可以
  • 动态更改 Highstock 中的范围

    我想动态更改图表中的范围 如果我从大值变为小值 一切都会正常 但如果我想再去更大的地方 就什么也不会发生 你可以在这里尝试一下 http jsfiddle net Charissima wkBwW 15 单击按钮 Range 50 然后单击
  • 使用 python 进行敏感性分析

    我正在尝试执行敏感性分析 并且我开始学习 python 所以我想在 python 中完成此任务 我发现了一个名为SALib但我真的不知道如何实现我自己的方程 例如 这是我的等式 ET 0 0031 C R 209 t t 15 1 首先我必
  • 使用 jQuery 从子域获取 JSON

    I have user1 mydomain com and user2 mydomain com域 我用api mydomain com通过 AJAX JSON 处理我的 Web 应用程序 所以 我想发出一个 POST 请求user1 my
  • 拨打号码时启动我的应用程序

    我想在拨打新号码或联系人号码时将我的应用程序显示为一个选项 我已关注这个话题 我有一个具有单一活动的应用程序 这是清单文件
  • 如何在 MySQL 中搜索 Soundex() 子字符串?

    我的 Joomla 有问题 3 集成搜索引擎 该引擎的索引器在索引内容时创建所谓的 soundex values 例如 测试对象 测试对象1 测试对象2239923 文本对象 它们都具有相同的 soundex 值 T23123 现在我的问题
  • 使用 C# 更改文件扩展名

    我有很多文件类型 pdf tiff jpeg bmp ETC 我的问题是如何更改文件扩展名 我试过这个 my file c my documents my images cars a jpg string extension Path Ge
  • PHP 脚本(嵌入式或其他形式)的安全性

    我对嵌入 PHP 代码的 HTML 网页 以 webpage php 形式存在于服务器上的网页 或可能被 HTML 页面引用的 PHP 脚本 即 PHP 脚本实际上不是网页的一部分 以 something php 形式存在于服务器上 并由
  • 使用 crontab 运行 PHP 脚本

    我知道 SO 是针对问题的 但无论我查了多少教程 我都无法得到我的crontab工作 我正在建立一个网站 该网站将依赖于crontab每天晚上重置我的数据库中的特定设置 这是我的crontab file Edit this file to
  • 如何在结构体字段中表示不透明类型

    我正在使用 genawater 箱来实现生成器函数 单线程 多任务 我有这段代码来创建一个新线程 并向其传递一个生成器 但我正在努力 找到如何表示impl Future输入那个gen 返回 use genawaiter rc gen Gen
  • getView 中的自定义 ArrayAdapter setBackground

    我正在开发一个 ListActivity 它将显示一堆数字 权重 我想更改 ListView 中特定行的背景 为此 我创建了 ArrayAdapter 类的自定义实现 并重写了 getView 方法 该适配器接受数字列表 并将数字 20 的
  • Firebase:对大型数据集的查询

    我正在使用 Firebase 来存储用户个人资料 我尝试在每个用户配置文件中放入最少量的数据 遵循有关结构化数据的文档中建议的良好实践 但由于我有超过 220K 个用户配置文件 因此在以 JSON 格式下载所有用户配置文件时 它仍然代表 1
  • Python - 在图中寻找模式

    该图是由以下生成的gnuplot脚本 这estimated csv文件可以在此链接中找到 https drive google com open id 0B2Iv8dfU4fTUaGRWMm9jWnBUbzg GNU Plot set st
  • 检查 Bash 数组是否包含值

    在 Bash 中 测试数组是否包含某个值的最简单方法是什么 这种方法的优点是不需要循环所有元素 至少不需要显式循环 但是由于array to string internal in array c仍然循环遍历数组元素并将它们连接成一个字符串