Esta declaração deve funcionar corretamente:
if [ "${uc,,}" != "y" ]
Explicação: Quando uc
está vazio, seu teste é expandido pelo shell da seguinte forma:
if [ != "y" ]
enquanto com as aspas é
if [ "" != "y" ]
Regra geral: Sempre use aspas ao redor das variáveis do shell que contêm strings ao expandi-las; eles podem conter espaços ou estar vazios, o que, quando não está indicado, costuma confundir o comando para o qual eles são passados (muitos parâmetros ausentes).