No bash, você pode realizar conversões de caso facilmente, por exemplo, if var="vAlUe"
then
$ echo "${var^^}"
VALUE
enquanto
$ echo "${var,,}"
value
Você pode usar isso para tornar a comparação sem diferenciação de maiúsculas e minúsculas, convertendo os dois argumentos para o mesmo caso, ou seja,
if [ "${first,,}" == "${second,,}" ]; then
echo "equal"
fi
ou
if [ "${first^^}" == "${second^^}" ]; then
echo "equal"
fi
Outra abordagem é usar a opção bash nocasematch
(obrigado @Tshilidzi_Mudau), embora isso pareça funcionar apenas com o operador de teste estendido [[ ... ]]
:
$ first=abc; second=ABC
$ (shopt -s nocasematch; if [[ "$first" == "$second" ]]; then echo "Match"; else echo "No match"; fi)
Match
mas
$ (shopt -s nocasematch; if [ "$first" == "$second" ]; then echo "Match"; else echo "No match"; fi)
No match
~$