В этом контексте это подстановка параметров .
Обозначения ${variable%.*}
означают, что принимают значение $variable
, убирают шаблон .*
с хвостазначение - мнемоника: процентT имеет «т» в хвосте - и дать результат.(Напротив, ${variable#xyz}
означает удаление xyz
из заголовка значения переменной - мнемоника: хэш имеет «h» в заголовке.)
Дано:
downloadFileName=abc.tar.gz
оценка extractDir="${downloadFileName%.*}-tmp"
дает эквивалент:
extractDir="abc.tar-tmp"
Альтернативная запись с двойным %
:
extractDir="${downloadFileName%%.*}-tmp"
даст эквивалент:
extractDir="abc-tmp"
%%
означает удаление максимально длинного хвоста;соответственно, ##
означает удаление самой длинной совпадающей головки.