首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash if语句中混合使用正则表达式和其他条件表达式

在bash if语句中混合使用正则表达式和其他条件表达式
EN

Stack Overflow用户
提问于 2010-03-16 17:17:41
回答 2查看 1.1K关注 0票数 0

在相当长的一段时间内,我不能绕过这个问题。当我阅读手册和教程时,我变得越来越困惑。我想要一个具有以下逻辑的if语句:

代码语言:javascript
复制
if [ -n $drupal_version ] && [[ "$drupal_version" =~ DRUPAL-[6-9]-[1-9][1-9] ]]; then

但是我不能让它正常工作。

当使用"bash -x ...“对脚本进行评估时脚本构造,工作正常,但当作为正则脚本运行时,我的表达式不会被计算(即使上面的条件应该满足,但运行的是else部分)。

你能提供任何帮助吗?

EN

回答 2

Stack Overflow用户

发布于 2010-03-16 17:28:29

您可以使用case/esac,不使用正则表达式。可在bash <3.2版本中使用

代码语言:javascript
复制
if [ -n "$drupal_version" ] ;then
  case "$drupal_version" in
   DRUPAL-[6-9]-[1-9][1-9]) 
      echo "found"
      ;;
   *) 
      echo "version not correct"
      ;;
  esac
fi

但是,如果您需要正则表达式,请注意它是=~而不是=

代码语言:javascript
复制
[[ $drupal_version =~ DRUPAL-[6-9]-[1-9][1-9] ]] && echo "found"
票数 0
EN

Stack Overflow用户

发布于 2010-03-16 22:38:15

感谢大家的回复。双括号]是特定于bash的构造,而bash需要脚本的第一行指向#!/bin/bash,而不是我的脚本中的#!/bin/sh。更改了这行代码,一切都正常了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2453143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档