La shell Bash es capaz de realizar lo que se denomina 'parameter expansion/substitution', la sintaxis empleada es ${var}, donde var es una variable shell.
Seguramente lo habrás usado cuando por el contexto te has visto obligado ha escribir ${var} en lugar de $var para acceder al valor de var.
Bash dispone de un buen número de funciones para el manejo de cadenas repartidas entre la utilidad expr y el 'parameter expansion', la función que he utilizado elimina de una cadena la subcadena de
mayor longitud que valida el patrón suministrado desde el comienzo de la cadena,
${1##*.tar.gz}, decuelve el resultado de eliminar de $1 la cadena más larga buscando desde el primer carácter de $1 que satisface el patrón *.tar.gz
Ejemplo,
"fichero.tar.gz", devolverá null, la cadena vacía, ya que toda ella satisface el patrón.
"fichero.tar.gz.txt", devolverá ".txt", la parte de la cadena tras el patrón.
Para obtener más información sobre este tema 'man bash' o 'info bash', el documento es bastante largo pero merece la pena leerlo.