我有一个简单的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) ]]