Linux 脚本在CentOS中可以正常工作,但在RHEL5上不能

Linux 脚本在CentOS中可以正常工作,但在RHEL5上不能,linux,bash,shell,centos,rhel,Linux,Bash,Shell,Centos,Rhel,以下脚本在CentOS上运行良好,但在RHEL5上不起作用: #!/bin/bash read -p "enter your value:" ip if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] then echo "valid" else echo "invalid" fi 运行脚本并将192.16666作为输入传递,它将显示valid。但如果你在CentOS也这么做,它会说无效 请告诉我出了什么问题 谢谢你。

以下脚本在CentOS上运行良好,但在RHEL5上不起作用:

#!/bin/bash
read -p "enter your value:" ip
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]
then
echo "valid"
else
echo "invalid"
fi
运行脚本并将192.16666作为输入传递,它将显示valid。但如果你在CentOS也这么做,它会说无效

请告诉我出了什么问题


谢谢你。但这似乎只是为了强制右引号字符串的文本匹配,这与本例无关。这个版本比这个版本旧吗?

通过在正则表达式中添加单引号解决了这个问题,如下所示:

#!/bin/bash
read -p "enter your value:" ip
if [[ $ip =~ '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' ]]
   then
     echo "valid"
   else
     echo "invalid"
fi

谢谢bdw:

在RHEL5上,您可以检查一下您的BASH版本吗?当然,您完全可以肯定,您没有忘记点之前的反斜杠\。关于RHEL5^_^