如果语句在RHEL 6中不起作用(RHEL 5中的工作)



我有一个简单的IF语句在RHEL 5中正常工作,但是出于某些无法解释的原因,在RHEL 6中失败了:

if [[ ! $1 =~ "(one|two|three)" ]] ; then
    echo -e "n***Invalid number"
    usage
    exit 1
else
    action=$1
fi  

我可以使用一个可以正常工作或重写它的案例语句,但最重要的是,我对发生了什么变化,假设它是Rhel的版本,而不是其他版本?

REGEX 不得在新的bash 中引用(从Bash版本3.2开始),尝试以下方法:

if [[ ! "$1" =~ (one|two|three) ]] ; then
    echo -e "n***Invalid number"
    usage
    exit 1
else
    action="$1"
fi 

为了使用引用的正则义务,您可以使用:

shopt -s compat31

编辑:正如Glen在下面评论的,您可以使用!~操作员,即。

[[ "$1" !~ (one|two|three) ]] 

相关内容

  • 没有找到相关文章

最新更新