Синтаксис с фунтом и знаком процента после имени параметра оболочки

Пожалуйста, объясните следующий синтаксис:

  i##*.

  i%.*   

Я понимаю, что он делает, но я хочу знать общую закономерность (почему / как он это делает).

Код, где он появляется:

#!/bin/bash

recursive_name_change()
{
    cd "$1"
    for i in *
    do
        #echo "${i##*.}"
        if [ -d "$i" ]
        then
            recursive_name_change "$i"
        elif [ "${i##*.}" = "cpp" ]
        then
             new_name=${i%.*}".c"
        mv "$i" "$new_name"
        fi
        done
        cd ../
    }

recursive_name_change .

Кто-то, пожалуйста, также предложите, где я могу найти эти специфические синтаксические формы?

Ответы на вопрос(2)

Ваш ответ на вопрос