String comparison

Basic types / Strings

first="A"
second="B"
third="A"

#[[ ]] answers with its exit code, && and || turn it into a word
[[ "$first" == "$second" ]] && areEqual1=true || areEqual1=false
#areEqual1 is false

[[ "$first" != "$second" ]] && areNotEqual=true || areNotEqual=false
#areNotEqual is true

[[ "$first" == "$third" ]] && areEqual2=true || areEqual2=false
#areEqual2 is true

#< and > compare the text in the dictionary order
[[ "$first" > "$second" ]] && moreThan=true || moreThan=false
#moreThan is false

#the trap: numbers compared as text, "10" goes before "9";
#-lt, -gt and (( )) compare numbers
[[ "10" < "9" ]] && textLess=true || textLess=false
#textLess is true

#without quotes the right side of == is a pattern, not text
pattern="?"
[[ "$first" == $pattern ]] && asPattern=true || asPattern=false
#asPattern is true, ? matches any one character

echo "areEqual1 is $areEqual1"
echo "areNotEqual is $areNotEqual"
echo "areEqual2 is $areEqual2"
echo "moreThan is $moreThan"
echo "textLess is $textLess"
echo "asPattern is $asPattern"