以下脚本在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作为输入,它会说有效。但是如果你在CentOS中做同样的事情,它会说无效。
请让我知道出了什么问题。
由于
答案 0 :(得分:0)
=~
匹配为introduced in Bash 3.0-alpha。 =~
semantics changed in 3.2,但似乎只是强制右手引用字符串的文本匹配,这与这种情况无关。该版本的版本是否早于此版本?
答案 1 :(得分:0)
通过在正则表达式中添加单引号来解决它,如:
#!/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:)