A expansão de parâmetro Bash suporta várias modificações que pode fazer no valor enquanto expande uma variável. Um deles é ## , que remove o prefixo mais longo de o valor que corresponde a um padrão (os padrões não são expressões regulares aqui).
Nesse caso, o padrão é *. . Isso corresponde a zero ou mais caracteres seguidos por . . ${x##*.} significa remover toda a cadeia até o último caractere . e deixar tudo depois desse ponto.
${1##*.} significa fazer essa expansão usando o valor do primeiro parâmetro posicional, o que você normalmente acessaria com $1 . O resultado final de
echo "${1##*.}"
é então imprimir a parte do primeiro argumento do script que vem depois do último . , que é a extensão do nome do arquivo.
Se o padrão não corresponder , o valor total da variável será expandido, como se você não tivesse usado o ## . Nesse caso, se o argumento que você deu não tiver um . , você poderá simplesmente retirá-lo novamente.
O Bash também suporta um único # para desativar o menor prefixo correspondente e a mesma coisa com % para corresponder ao final da string.