O problema em seu código é que o loop faz um loop enquanto $result
não é o mesmo que ambos stringA
e stringB
(ao mesmo tempo). Você pode querer usar
while [[ "${result,,}" != 'stringa' ]] && [[ "${result,,}" != 'stringb') ]]
ou
until [[ "${result,,}" == 'stringa' ]] || [[ "${result,,}" == 'stringb') ]]
Para que um usuário escolha uma das poucas opções, não faça com que ele digite strings longas. Em vez disso, forneça a eles um menu simples para escolher.
Sugestão:
#!/bin/bash
PS3='Your choice: '
select result in 'stringA' 'stringB'; do
case $REPLY in
[12])
break
;;
*)
echo 'Invalid choice' >&2
esac
done
printf 'You picked %s!\n' "$result"
Executando isso:
$ bash script.sh
1) stringA
2) stringB
Your choice: 3
Invalid choice
Your choice: 2
You picked stringB!