Когда %используется в шаблоне, ${variable%substring}он будет возвращать содержимое variableс кратчайшим вхождением, substringудаленным из задней части variable.
Эта функция поддерживает шаблоны подстановочных знаков - поэтому она принимает звездочку (звездочку) в качестве замены для нуля или более символов.
Следует отметить, что это специфично для Bash - другие оболочки linux не обязательно содержат эту функцию.
Если вы хотите узнать больше о работе со строками в Bash, я настоятельно рекомендую прочитать эту страницу. Среди других полезных функций это, например, объясняет, что делает %%:)
Изменить: Я забыл упомянуть , что , когда он используется в шаблоне $((variable%number))или персонаж будет функционировать в качестве оператора по модулю. DavidPostill имеет более конкретные ссылки на документацию в своем ответе.$((variable1%$variable2))%
Когда %используется в другом контексте, он должен распознаваться только как обычный символ.
%%или##, так как это запоминающееся и достаточно редкое место, чтобы быстро найти нужный раздел.man bash/##