Esa es una de las razones por las que necesita citar sus variables:
echo "${str:$i:1}"
De lo contrario, bash expande la variable y en este caso hace globbing antes de imprimir. También es mejor citar el parámetro al script (en caso de que tenga un nombre de archivo coincidente):
sh lash_ch.sh 'abcde*'
Consulte también el orden de las expansiones en el manual de referencia de bash . Las variables se expanden antes de la expansión del nombre de archivo.
Para obtener el último carácter, debe usarlo -1
como índice, ya que los índices negativos cuentan desde el final de la cadena:
echo "${str: -1}"
El espacio después de los dos puntos ( :
) es REQUERIDO.
Este enfoque no funcionará sin el espacio.
"${1: -1}"
es suficiente.