在 Bash 中如何查看字符串是否不在数组中?

2024-01-22

我试图在不添加额外代码(例如另一个 for 循环)的情况下执行此操作。我可以创建将字符串与数组进行比较的正逻辑。虽然我想要负逻辑并且只打印不在数组中的值,但本质上这是为了过滤掉系统帐户。

我的目录中有这样的文件:

admin.user.xml 
news-lo.user.xml 
system.user.xml 
campus-lo.user.xml
welcome-lo.user.xml

如果该文件位于目录中,这是我用来进行正匹配的代码:

#!/bin/bash

accounts=(guest admin power_user developer analyst system)

for file in user/*; do

    temp=${file%.user.xml}
    account=${temp#user/}
    if [[ ${accounts[*]} =~ "$account" ]]
    then
        echo "worked $account";
    fi 
done

任何正确方向的帮助将不胜感激,谢谢。


您可以否定正匹配的结果:

if ! [[ ${accounts[*]} =~ "$account" ]]

or

if [[ ! ${accounts[*]} =~ "$account" ]]

但是,请注意,如果$account等于“user”,您将得到一个匹配项,因为它与“power_user”的子字符串匹配。最好明确地迭代:

match=0
for acc in "${accounts[@]}"; do
    if [[ $acc = "$account" ]]; then
        match=1
        break
    fi
done
if [[ $match = 0 ]]; then
    echo "No match found"
fi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Bash 中如何查看字符串是否不在数组中? 的相关文章

  • shell解析json并循环输出组合变量

    杰斯克喜欢我之前的话题 https stackoverflow com questions 74063588 shell parsing json contains spaces in string 我知道如何解析带有空格的简单 json
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • 使用 grep 查找所有匹配的模式

    In txt1 S01A1P2 S01A1P5 S01A1P4 In txt2 data train wave S01A1P3 mfc data train wave S01A1P7 mfc data train wave S01A1P8
  • “检测到堆栈粉碎”消息打印到哪个流?

    考虑以下非常基本的程序 它在此处以多种形式出现在其他问题上 include
  • adb shell 输入带有空格的文本

    如何发送带有空格的文本 例如 一些文字 using adb shell input text 找到以下解决方案 adb shell input text some stext 工作正常 但是有什么简单的方法可以用 s 替换空格吗 Examp
  • 在 C# 中编写批处理脚本的好方法是什么?

    我想用 C 编写简单的脚本 我通常会使用 bat 或 4NT btm 文件 复制文件 解析文本 询问用户输入等等 相当简单 但在批处理文件中正确执行这些操作确实很困难 例如没有例外 我熟悉像 AxScript 这样的命令行 脚本 包装器 这
  • wget 并行下载文件并重命名

    我有一个包含两列的文本文件 第一列是要保存的名称 第二列是资源的 url 地址 10000899567110806314 jpg http lifestyle inquirer net files 2018 07 t0724cheekee
  • Ctrl-p 和 Ctrl-n 在 Docker 下表现异常

    For the life of me I can t seem to figure out why ctrl p and ctrl n don t work like they re supposed to under the Docker
  • Bash touch - 非法选项 -d

    昨天我拍了很多照片 但我忘记更改相机中的时区 现在所有图片的修改日期都有错误 我想将特定目录中所有文件的修改日期更改为minus 10 hours bin sh for i in Users slick Desktop 100D5200 d
  • Bash 的源命令无法处理从互联网上卷曲的文件

    我正在尝试使用curl从互联网获取脚本文件 如下所示 source lt curl url echo done 我看到的是 完成 得到了回响before卷曲甚至开始下载文件 这是实际的命令和输出 bash 3 2 source lt cur
  • “alias: =: not found”,且未定义别名,在 .bashrc 中使用“alias ll = 'ls -l'”

    我在 Mac OSX 上并尝试在 bashrc 中添加一些基本别名 例如alias ll ls l 我在 bash profile 中获取了 bashrc 启动时它识别出我在 bashrc 中的函数 但是 每次添加别名然后尝试启动它时 我都
  • Bash 脚本跳过提取受密码保护的档案

    我有一个脚本 它使用命令对某些文件夹中的特定 zip 和 或 tar gz 存档进行批量提取 unzip o zip path d destination folder 不幸的是 当存档受密码保护时 脚本会停止并等待密码输入 有没有办法省略
  • Grep 搜索带有换行符的字符串

    如何使用 grep 输出下面给出的输入文件中出现的字符串 export to excel 具体来说 如何处理搜索字符串之间发生的换行符 grep 中是否有一个开关可以执行此操作或其他命令 输入文件 文件a txt 等等 导出到优秀 巴拉巴拉
  • sed 和 rev shell 命令转换为 Python 脚本 [重复]

    这个问题在这里已经有答案了 有一个shell命令 我正在尝试将逻辑转换为python 但我不知道该怎么办 我需要一些帮助 shell命令是这样的 cd tests src main test ls find name vrlp while
  • 通过 Node.js 运行 bash 脚本 - 非法选项 -o pipelinefail

    我正在尝试使用 Node js 执行 bash 脚本child process exec 然而它在文件的第二行爆炸 usr bin env bash set eo pipefail TRACE set x echo we are here
  • AJAX 进度条 - 轮询、Comet?

    我想要一些关于如何实施以下内容的建议 我想让我的用户通过 AJAX 了解在我的服务器上运行的任务的进度 我的服务器运行一个 PHP 脚本 该脚本使用 popen 函数通过 shell 命令下载文件 它定期回显 打印正在发生的事情 我想使用
  • HBase Shell 日志记录

    使用 HBase shell 时 我收到大量日志记录 包括 INFO 和 DEBUG 消息 虽然这对于学习 HBase 内部结构来说很有趣 但它非常冗长并且可能会掩盖输出 我尝试过以多种不同的方式更改日志记录级别 包括所描述的here ht
  • Xcode 方案预操作脚本未运行

    点击构建 构建日志中不会打印任何内容 是什么赋予了 Xcode 版本 8 2 1 8C1002 预操作发生在构建之前 因此输出不会进入构建日志 而是进入 stdErr 您可以将输出复制到文件中 exec gt PROJECT DIR pre
  • EULA 接受 Bash 脚本

    我有一个尝试安装垃圾箱的脚本 除了 bin 在 more 中打开 EULA 之外 一切正常 在脚本再次开始并自行完成安装之前 您必须手动 ctrl c 退出此 more 实例 因为这更多的是逃离 shell 所以脚本在打开后不知道要运行什么
  • rsync --include 选项不排除其他文件

    尝试rsync某些扩展名 sh 的文件 但下面的bash脚本仍然传输所有文件 为什么 from home xxx rsync zvr include sh from root host home tmp 您需要添加 exclude all

随机推荐

  • MPMoviePlayerController 与启动 UIWebView 来流电影的优缺点

    我有一位客户拥有 Flash 格式的网络视频内容 我的任务是帮助他们在 iPhone 应用程序中展示视频 我意识到第一步是将这些视频转换为适合 iPhone 的 Quicktime 格式 然后我必须帮助客户弄清楚如何或在哪里托管这些文件 如
  • python列表中的索引错误

    B l append l i A B l 这里是一个列表 我试图向其中附加更多值以使其充当数组 但它仍然给我错误 如列表索引超出范围 如何摆脱它 您的代码存在很多问题 1 the append method 不返回任何内容 所以这样写是没有
  • SQL-如何将 YYYYMM 数字转换为日期

    所以我对 SQL 还很陌生 我有一个充满数字的列 以 YYYYMM 格式列出年份和月份 即 2016 年 7 月的 201607 我想知道是否可以在 SQL 中将其转换为正确的日期格式 我已经做了相当多的研究 并且看到了很多关于将 YYYY
  • 如何发送 zip 文件而不在物理位置创建它?

    我想发送带有 zip 文件附件的电子邮件 我可以发送 pdf 文件 而无需使用 ByteArrayOutputStream 将它们保存在物理位置 但是当我尝试压缩这些文件并发送它时它不起作用 它给出了非法附件的异常 下面是我编写的用于创建
  • 从 iOS 中的离屏 OpenGL 像素缓冲区读取像素 (OopenGL-ES)

    我想从屏幕外 不受 CAEAGLLayer 支持 帧缓冲区读取像素 我创建缓冲区的代码如下所示 glGenFramebuffersOES 1 storeFramebuffer glGenRenderbuffersOES 1 storeRen
  • Woocommerce 订单数量的倍数

    我试图将 woocommerce 限制为仅以 5 10 或 15 的固定数量进行销售 下面的代码片段 我在这个论坛上找到的 允许我将最小数量设置为 5 但我想知道是否有人可以建议是否可以将其修改为允许 5 10 或 15 我感谢您提供的任何
  • 如何找到文本光标的全局位置?

    我想执行一个QMenu http qt nokia com doc 4 0 qmenu html文本光标位置处的对象QPlainTextEdit http doc trolltech com main snapshot qplaintext
  • 你最喜欢的 C++ 编码风格习语是什么 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 use_library('django','1.2')

    我正在学习在 Google App Engine 中进行开发 这是教程中的代码之一 http code google com appengine docs python gettingstarted usingwebapp html htt
  • 如何防止在 twitter bootstrap typeahead 插件中按 Enter 键提交

    我有一个输入文本 我应用它的预输入插件来建议项目 但是当我在输入文本上按 Enter 键时 它会提交表单 如何使用 twitter bootstrap typeahead 插件阻止表单提交 您可以通过向特定输入添加 ID 并简单地删除 En
  • git flow 发布选定的功能

    我正在尝试向我的团队介绍 Git 流程 我们是一个相当小的团队 而且非常敏捷 我们希望每天发布一次 这意味着我们测试当天所有更改的时间有限 业务团队希望能够控制正在发布的功能 尽管这并不理想 Git 流程似乎不能很好地适应这一点 从开发中删
  • 在 Android 中调整图片大小同时仍保持质量

    我想将图像文件大小减小到 100 KB 以下 同时保持图像质量 就像 Whatsapp 和 Facebook 所做的那样 我尝试了 stackoverflow 上几乎所有可用的 android 图像压缩代码 但这对我不起作用 现在我正在关注
  • C++14 中的递归 lambda 函数 [重复]

    这个问题在这里已经有答案了 在 C 11 中编写递归 lambda 函数有一个经常重复的 技巧 如下所示 std function
  • java.sql.Date 如何处理负日期?

    我遇到过这样的情况 当从数据库读取日期时 Java 运行时返回某种 反转 毫秒值 在java sql Date 毫秒值与天数大致相同 但从 0 年开始倒推 只需重新启动 Java 运行时即可解决该问题 但是 我发现 Java 几乎可以正确地
  • 如何在 Three.js 中实现 ShaderToy 着色器?

    寻找有关如何在 Threejs 中重新创建 ShaderToy 参数 iGlobalTime iChannel 等的信息 我知道 iGlobalTime 是自着色器启动以来经过的时间 我认为 iChannel 的东西是用于从纹理中提取 RG
  • 如何按最小增量更改 double

    是不是有什么东西坏了或者我不明白发生了什么 static String getRealBinary double val long tmp Double doubleToLongBits val StringBuilder sb new S
  • 为什么在 Scala 中使用 def 和 val ,反之亦然

    我知道这已经在其他帖子中讨论过 并且我了解使用之间的基本区别def and val def用于定义方法并且val以获得不可变的引用 我想通过问这个问题来完成的是了解是否还有更多的事情可以做def 它可以与 a 互换使用吗val 最近我尝试了
  • 分段错误处理程序中的分段错误

    Linux 下分段故障处理程序中发生的分段故障是否有一些定义的行为 是否会再次调用同一个处理程序 如果是 在所有平台上是否已定义等等 谢谢 答案取决于您如何安装信号处理程序 如果您使用已弃用的安装信号处理程序signal http linu
  • 如何防止div进出动画中的多次点击

    我想通过点击它来将 div 移入和移出 我只是像这样对 div 进行动画处理
  • 在 Bash 中如何查看字符串是否不在数组中?

    我试图在不添加额外代码 例如另一个 for 循环 的情况下执行此操作 我可以创建将字符串与数组进行比较的正逻辑 虽然我想要负逻辑并且只打印不在数组中的值 但本质上这是为了过滤掉系统帐户 我的目录中有这样的文件 admin user xml