Essa é uma das razões pelas quais você precisa citar suas variáveis:
echo "${str:$i:1}"
Caso contrário, o bash expande a variável e, nesse caso, brilha antes de imprimir. Também é melhor citar o parâmetro para o script (caso você tenha um nome de arquivo correspondente):
sh lash_ch.sh 'abcde*'
Veja também a ordem das expansões no manual de referência do bash . As variáveis são expandidas antes da expansão do nome do arquivo.
Para obter o último caractere, você deve apenas usar -1
como índice, uma vez que os índices negativos contam desde o final da string:
echo "${str: -1}"
O espaço após os dois pontos ( :
) é NECESSÁRIO.
Essa abordagem não funcionará sem o espaço.
"${1: -1}"
é o suficiente.