|
很妖精的问题:
RedHat EL5 ( bash 3.2.25(1) ) 和Ubuntu 9.04 (bash 3.2.48(1) ) 在处理BASH_REMATCH 时不同, RedHat EL5 中要加“” ,Ubuntu 9.04中不能加双引号! 具体实力看下面:
RedHat EL5 ( bash 3.2.25(1) )
[kevin@server1 shell]# if [[ 192.168.1.1 =~ "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" ]] ; then echo ok ; else echo fail ; fi
ok
[kevin@server1 shell]# if [[ 192.168 =~ "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" ]] ; then echo ok ; else echo fail ; fi
fail
如不加“”
[kevin@server1 shell]# if [[ 192.168 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] ; then echo ok ; else echo fail ; fi
ok
Ubuntu 9.04 (bash 3.2.48(1) )
kevin@kevin-laptop:[ shell] $ if [[ 192.168.1.1 =~ "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" ]] ; then echo ok ; else echo fail ; fi
fail
如不加“”
kevin@kevin-laptop:[ shell] $ if [[ 192.168.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] ; then echo ok ; else echo fail ; fi
ok
kevin@kevin-laptop:[ shell] $ if [[ 192.168 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] ; then echo ok ; else echo fail ; fi
fail
很诡异!
有知道具体原因或实现细节的朋友请回复! |
|