Seu problema é que [ "Yes" ]
e [ "No" ]
são equivalentes a [ -n "Yes" ]
e [ -n "No" ]
e, portanto, sempre são avaliados como verdadeiros.
A sintaxe correta seria:
if [ "$th" = "yes" ] || [ "$th" = "Yes" ]; then
...
if [ "$th" = "no" ] || [ "$th" = "No" ]; then
Ou:
if [ "$th" = "yes" -o "$th" = "Yes" ]; then
...
if [ "$th" = "no" -o "$th" = "No" ]; then
Ou, se você estiver usando bash
como um interpretador do shell Bourne:
if [ "${th,,}" = "yes" ]; then
...
if [ "${th,,}" = "no" ]; then
( ${th,,}
sendo substituído pelo valor minúsculo da variável th
)