【问题标题】:Scripts works fine in CentOS but not on RHEL5脚本在 CentOS 上运行良好,但在 RHEL5 上不行
【发布时间】:2014-08-31 22:01:13
【问题描述】:

以下脚本在 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 中做同样的事情,它会说无效。

请让我知道出了什么问题。

谢谢

【问题讨论】:

  • 在 RHEL5 上你能检查你的 BASH 版本吗?
  • 当然,您绝对确定您没有忘记 RHEL5 上点 (\.) 之前的反斜杠... ^_^

标签: linux bash shell centos rhel


【解决方案1】:

=~ 匹配为 introduced in Bash 3.0-alpha=~ semantics changed in 3.2,但似乎只是强制文本匹配右手引用的字符串,这与这种情况无关。版本比那个旧吗?

【讨论】:

    【解决方案2】:

    通过在正则表达式中添加单引号自行解决,如下:

    #!/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 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多