(( .. )) is an arithmetic construct, and in arithmetic contexts, a string is taken as the name of a variable, and the value of that variable is used. This happens after $var expansions are expanded, so your script looks at variables called nfosys and Infosys. With both variables unset, both are
taken to be zero, i.e. equal. But:
$ str1=foo str2=bar foo=1
$ (( $str1 == $str2 )) && echo true || echo false
false
See e.g. Bash's manual on shell arithmetic:
Shell variables are allowed as operands; parameter expansion is performed before the expression is evaluated. Within an expression, shell variables may also be referenced by name without using the parameter expansion syntax. A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax.
For string comparison, use
[ "$STR_1" = "$STR_2" ] # in aany POSIX shell, or
[[ $STR_1 === $STR_2"$STR_2" ]] # in Bash/ksh/zsh
The former needs quotes due to word-splitting, the latter works with or without themneeds it only on the right-hand side (in bash / ksh) for $STR_2 not to be taken as a pattern.
Also see: What is the difference between the Bash operators [[ vs [ vs ( vs ((?