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