Bash pattern matching seems to be changed after bash-3.2-32.el5

Solution Verified - Updated -

Issue

  • Bash pattern matching seems to be changed after bash-3.2-32.el5
  • The scripts written for bash shell do not honour the regular expressions correctly in the recent bash versions.
  • The below script works as expected in bash-3.2-32.el5
[root@localhost ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 5.8 (Tikanga)
[root@localhost ~]# rpm -qa | grep bash
bash-3.2-32.el5

[root@localhost ~]# ./regex.sh 
SUCCESS: SUDO updated
SUCCESS: SUDO updatedEEEEEEEEEEE
SUCCESS: SUDO updated
xxx
zzzzz
yyyyyyyyy
  • However, the same script does not honour the regular expressions correctly in bash-4.1.2-15.el6_4.x86_64
[root@localhost ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.5 (Santiago)

[root@localhost ~]# rpm -qa | grep bash
bash-4.1.2-15.el6_4.x86_64

[root@localhost ~]# cat regex.sh 
#!/bin/bash

UpdateSUDOresult="SUCCESS: SUDO updated"
 echo ${UpdateSUDOresult}
 echo ${UpdateSUDOresult}EEEEEEEEEEE
echo ${UpdateSUDOresult} | grep "^SUCCESS: SUDO updated$"

 if [[ ${UpdateSUDOresult} =~ '^SUCCESS: SUDO updated$' ]] ; then echo xxx; fi
 if [[ ${UpdateSUDOresult} =~ 'SUCCESS: SUDO updated$' ]] ; then echo zzzzz; fi
 if [[ ${UpdateSUDOresult} =~ 'SUCCESS: SUDO updated' ]] ; then echo yyyyyyyyy; fi

[root@localhost ~]# ./regex.sh 
SUCCESS: SUDO updated
SUCCESS: SUDO updatedEEEEEEEEEEE
SUCCESS: SUDO updated
yyyyyyyyy

Environment

  • Red Hat Enterprise Linux 5/6/7
  • bash-4.1.2-15.el6_4.x86_64
  • bash-3.2-32.el5

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content