Jitesh Sojitra Jitesh Sojitra - 2 months ago 17
Linux Question

Bash if condition doesn't match when comparing particular string

Bash if condition doesn't match when comparing particular string

Matching string:



Red Hat Enterprise Linux Server release 7.2 (Maipo)


Code:



machineOSVersion="Red Hat Enterprise Linux Server release 7.2 (Maipo)"

modifiedOSVersion="CentOS Linux release 7 OR Red Hat Enterprise Linux Server release 7.2 (Maipo)"

if [[ ${machineOSVersion} = *"${modifiedOSVersion}"* ]]; then

echo -e "match"

else

echo -e "doesn't match"

fi



Expected: match

Actual: doesn't match


The same code works with other strings. Is this failing because of ( or ) character in the string? Can someone please help me please?

Answer

You've got the 2 variables in the comparison backwards. You have to write the conditional as follows:

if [[ ${modifiedOSVersion} = *"${machineOSVersion}"* ]]; then

You can think of this like that: ${modifiedOSVersion} is the largest of the two strings, so you need to add stuff to ${machineOSVersion} to match it. This additional stuff is represented here by the two *.

Comments