Compare a string using sh shell

sh, shell, unix

Solution

You should use the `=` operator for string comparison:

Sourcesystem="ABC"

if [ "$Sourcesystem" = "XYZ" ]; then 
    echo "Sourcesystem Matched" 
else
    echo "Sourcesystem is NOT Matched $Sourcesystem"  
fi;

`man test` says that you use `-z` to match for empty strings.

Problem

I am using SH shell and I am trying to compare a string with a variable's value but the `if` condition is always execute to true. Why? Here is some code: ``` Sourcesystem="ABC" if [ "$Sourcesystem" -eq 'XYZ' ]; then echo "Sourcesystem Matched" else echo "Sourcesystem is NOT Matched $Sourcesystem" fi; echo Sourcesystem Value is $Sourcesystem ; ``` Even this is not working: ``` Sourcesystem="ABC" if [ 'XYZ' -eq "$Sourcesystem" ]; then echo "Sourcesystem Matched" else echo "Sourcesystem is NOT Matched $Sourcesystem" fi; echo Sourcesystem Value is $Sourcesystem ; ``` Secondly, can we match this with a NULL or empty string?

Original source

Related problems