如何在 bash 中使用正则表达式验证版本号是否有效?

2024-01-15

我正在尝试验证版本号是否与版本模式匹配,但似乎检查由于某些奇怪的原因而失败。

#!/bin/bash
VERSION="1.2.3"
if [[ $VERSION =~ ^(\d+\.)?(\d+\.)?(\*|\d+)$ ]]; then
 echo "INFO:<-->Version $VERSION"
else
 echo "ERROR:<->Unable to validate package version: '$VERSION'"
 exit 1
fi

你应该使用[0-9] or [[:digit:]]在 Bash 中而不是\d(因为 Bash 不支持这个速记字符类),我建议在限制量词 http://www.regular-expressions.info/repeat.html#limit并将模式放入变量中:

#!/bin/bash
VERSION="1.2.3"
rx='^([0-9]+\.){0,2}(\*|[0-9]+)$'
if [[ $VERSION =~ $rx ]]; then
 echo "INFO:<-->Version $VERSION"
else
 echo "ERROR:<->Unable to validate package version: '$VERSION'"
 exit 1
fi

See the IDEONE演示 https://ideone.com/HaBgpA

The ([0-9]+\.){0,2}parts 匹配 1 个或多个数字,后跟文字点 0、1 或 2 次。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 bash 中使用正则表达式验证版本号是否有效? 的相关文章

  • 带有变量 bash 的降序循环

    cat fromhere sh bin bash FROMHERE 10 for i in seq FROMHERE 1 do echo i done sh fromhere sh 为什么不起作用 我找不到任何在谷歌中搜索降序循环的示例 甚
  • Unicode、正则表达式和 PyPy

    我写了一个程序来添加 有限 统一码支持 https stackoverflow com q 1832893 520779到 Python 正则表达式 虽然它在 CPython 2 5 2 上工作正常 但在 PyPy 上不起作用 1 5 0
  • 使用 python 更改目录

    我碰巧发现我无法从 python 代码中更改实际目录 我的测试程序如下 from os import system def sh script system bash c s script sh cd home sh pwd 的输出pwd
  • 用于匹配某些数字的正则表达式

    以下正则表达式将匹配 9 11 位数字 d 9 11 编写完全匹配 9 的正则表达式的最佳方法是什么or11位数字 不包括10位 使用输入元素的模式属性 因此正则表达式应该匹配输入字段的整个值 我想接受任何包含 9 或 11 位数字的号码
  • [\b] 退格正则表达式有什么用?

    b 显然匹配退格字符 我无法理解字符串如何包含退格字符 有人能给我一个具体的例子来说明如何使用它吗 非常感谢 虽然所有其他人总体上都是正确的 即 b是单词边界 b does表示字符类中的退格键 b 这确实会匹配退格字符 它只是一个可以出现在
  • 使用正则表达式定位响铃字符

    我注意到 Bell 有一个正则表达式字符 我却无法匹配 我读到了这个角色的内容维基百科 http en wikipedia org wiki Bell character 但我不明白如何在正则表达式中找到它
  • PHP 删除字符最后一个实例之前的所有内容

    有没有办法删除某个字符之前的所有内容 包括最后一个实例 我有多个字符串 其中包含 gt e g the gt cat gt sat gt on gt the gt mat welcome gt home 我需要对字符串进行格式化 以便它们变
  • awk 的 printf 插入多个变量的正确语法是什么?

    我复制了一些使用 printf 输出字符串在文件中出现的频率的代码 awk BEGIN print The number of times a appears in the file a a counter 1 END printf s n
  • PHP 电子邮件验证[重复]

    这个问题在这里已经有答案了 For PHP最好的电子邮件验证方法是什么preg NOT ereg因为它是已弃用 删除 I don t需要检查该网站是否存在 这不像最高安全性 我找到了很多方法ereg但它们 显然 不是好的做法 我建议你使用F
  • 以受限用户身份运行 monit 并使其监视需要 root 权限的进程

    我有一个用 Ruby 编写的特定脚本 需要 root 权限 大多数其他进程不需要它 因此很容易在 Monit 中设置 不是这个 服务器需要监听386 这个端口只有root可用 我不会详细说明原因 因为 1 我不是一个低级的人 2 到目前为止
  • while 循环中 regex.exec() 赋值的更好解决方案

    这里有更好的解决方案吗 我尽量避免里面的作业while但仍然能够循环匹配并使用捕获的组 var match var CSS URL PATTERN url s s s s gm while match CSS URL PATTERN exe
  • sed 中的正则表达式用于在一条语句中进行多个替换

    我想清理一些输入并用可接受的输入替换几个字符 例如一个丹麦人 with aa 使用多个语句可以轻松完成此操作 例如 ae aa oe 但由于工具限制 我希望能够在单个正则表达式中完成此操作 我可以捕获所有相关案例 但我的替换不能按我想要的方
  • 监听外部事件。 Bash 到 NodeJS 的桥梁

    在 NodeJS 进程内部 我如何监听来自 bash 的事件 例如 NodeJS side obj on something function data console log data Bash side do something Hel
  • 正则表达式匹配 JWT

    我没有正则表达式的经验 我请求你的帮助 我需要一个正则表达式来捕获以下字符串中的 JWT contextJwt eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 eyJzdWIiOiJIZWxsbyB5b3UiLCJ
  • Bash 脚本监听按键以继续

    因此 我想编写一个由一系列步骤组成的 bash 脚本 并将其标识为 task 然而 每个步骤都只能完成并且可以根据用户的需要运行 Do task1 if keypressed stop task1 and move on this is t
  • 通过 bash 从文件中检索电子邮件主题

    我有一个 shell 脚本 它将文件从服务器邮件文件夹下载到 NAS 设备 以便客户端拥有本地备份的副本 文件保存为11469448248 H15587P19346 smtp x14 eu 2 S文件 我已将扩展名更改为标准 eml 格式
  • R strsplit:根据字符分割,除非后面有特定字符

    假设我有一个字符串向量 例如 split these c File Location C Documents File Location Pete s Computer File Location 我想根据 分割该向量中的每个元素 除非后面
  • 有没有类似RegexBuddy的在线正则表达式分析器? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个在线实用程序 可以美化正则表达式并向其添加解释性注释 有吗 我喜欢在线工具 http regexr com http reg
  • mod_rewrite 可以转换任意数量、任意名称的参数吗?

    我对 mod rewrite 完全是个新手 我想做的事情听起来很简单 我不想拥有domain com script php a 1 b 2 c 3 我想要 domain com script a 1 b 2 c 3 问题是我的脚本采用各种组
  • 如何匹配撇号('),除非它被转义(\')?

    是否可以为此构造一个正则表达式 如果是这样 如果有人展示如何操作 我将不胜感激 使用这个正则表达式

随机推荐

  • ASP.NET MVC 5 不渲染 jQuery UI CSS 包

    我正在尝试将 jQuery UI CSS 主题包包含在我的项目中 我的文件夹里有所有需要的文件 Content themes目录 并设置我的BundleConfig cs如下 public class BundleConfig For mo
  • Apache CXF Web 服务问题

    我有一个使用 Maven 的多模块项目 在其中一个模块上 我有几个使用 Apache CXF Framework 2 5 4 开发的 Web 服务 目前我有两个 问题 或疑问 首先 如果我调用应返回列表的 Web 服务之一的方法 如果列表为
  • “this”关键字似乎不起作用

    我试图理解如何this关键字在 JavaScript 中有效 我制作了这个脚本 function click this innerHTML changed 在此 HTML 中使用
  • 在 R 中将多个 XML 文件合并到一个数据框中

    我有许多 XML 文件 大约 100 000 个 它们都如下所示 每个文件大约有 100 个点节点 我只展示其中五个以供说明
  • 在 F# 元组中使用 CustomComparison 和 CustomEquality 实现自定义比较

    我来这里是为了询问一个特定的主题 我确实在网上找到了一些有关此问题的信息 我正在实现 Minimax 算法的 F 版本 我现在遇到的问题是我想比较我的树的叶子 下面的数据结构 搜索 VS 给我的错误 我得到了这样的结果 我曾经拥有的树类型
  • 将 bash 环境变量发送回 python Fabric

    我正在尝试将 bash 环境变量传递回我的结构函数 如下所示 from fabric api import env def env localhost All the environment variables relating to yo
  • 从 fasta 文件中删除多个序列

    我有一个字符序列的文本文件 由两行组成 标题和下一行中的序列本身 该文件的结构如下 gt header1 aaaaaaaaa gt header2 bbbbbbbbbbb gt header3 aaabbbaaaa gt headerN a
  • 将 docker 映像从 GCR 拉入 GKE 时出错“无法拉取映像 .... 403 Forbidden”

    背景 我有一个 GKE 集群突然无法从 GCR 提取我的 docker 镜像 两者都在同一个 GCP 项目中 它已经运行良好几个月了 提取图像没有任何问题 现在在没有进行任何更改的情况下开始抛出错误 注意 我通常是团队中唯一访问 Googl
  • 记录亚马逊 Alexa 未处理的话语

    是否可以记录用户提出的触发未处理意图的问题 我打算做什么 当用户说出 Alexa 无法理解的话语时 它会触发未处理的意图 这里我想请用户重复该语句并将其存储在数据库中以供将来参考 这需要我创建一个意图 期望有一个可以接受语句的槽 即槽值不会
  • 应用程序版本未显示在 Spring Boot Banner.txt 中

    运行应用程序时 banner txt 中定义的应用程序版本不会显示在控制台上 它的定义是根据Spring Boot 文档 http docs spring io spring boot docs current SNAPSHOT refer
  • Python:在PDF中搜索文本

    我想写一个这样的函数 输入 一个 PDF 文件 一个字符串 该 PDF 是可搜索的 例如 它是由 MS Word 创建的 输出 PDF 文件中字符串的页面和位置 坐标 x 和 y 如果有 你能给我一些提示 什么库 方法 来用Python来做
  • C++ 标准库或其他广泛使用的库中的单链表?

    好像C 标准库里只有双向链表 没有单链表 吧 是否有广泛使用的带有单链表的 C 库 有的是slist http www boost org doc libs 1 35 0 doc html intrusive slist htmlBoost
  • 将 git 子模块与 python 一起使用

    我在这个网站上阅读了很多关于 git 子模块使用的博客文章和问题 但仍然不知道如何更好地在 python 中使用它们 我的意思是 如果我有这样的包 管理依赖项的更简单方法是什么 mypkg init py setup py submodul
  • 在 Spark RDD 和/或 Spark DataFrame 中重塑/旋转数据

    我有一些以下格式的数据 RDD 或 Spark DataFrame from pyspark sql import SQLContext sqlContext SQLContext sc rdd sc parallelize X01 41
  • 为什么scanf可以将errno设置为零?(当输入“ctrl+D”时)

    手册告诉我们 errno永远不会被任何系统调用或库函数设置为零 但我想知道 为什么以下代码中的errno可以通过scanf设置为零 当scanf 输入 ctrl D 时 include
  • 没有让 JSR303 注释与 Tomcat 7 一起使用

    经过几个小时的谷歌和几个教程后 我被击败了 事实并不是我收到的错误可以给我提示问题是什么 而是完全没有错误让我发疯 下面的代码可以工作 只是没有达到应有的效果 用于检查输入不为空或长度小于 3 个字符的注释永远不会运行 当部署项目或写入 n
  • 如何确定 Java 应用程序的主类?

    我们正在开发一个平台 许多开发人员将在其中编写自己的 ETL 应用程序 这些应用程序使用供应商的 API 然后将其提交到平台上执行 我们希望限制开发人员在编写 Main 类 通常只使用供应商的 API 时不要只顾自己的事情 以促进一些牢固的
  • 版本号 float、decimal 或 double

    我有一个文档管理系统 其中文档可以有多个版本 每个版本都会被保存 用户可以查看版本历史记录 我想知道的是 我应该使用什么数据类型作为版本号 小数 浮点还是双精度 我正在使用 NET 和 C 版本号开始于0 1以及每一个发表的major版本将
  • 分段函数 lmfit

    我正在尝试定义一个分段函数 以便由 Python 中的 lmfit 库拟合 我遇到的问题是我为该函数定义的参数不会与我提交的数据一起评估 我有一个与我的案例有点相似的例子here https stackoverflow com questi
  • 如何在 bash 中使用正则表达式验证版本号是否有效?

    我正在尝试验证版本号是否与版本模式匹配 但似乎检查由于某些奇怪的原因而失败 bin bash VERSION 1 2 3 if VERSION d d d then echo INFO lt gt Version VERSION else