Я нашел этот код:
EXTENSION="${i#*=}"
То, что это делает, должно взять переменную $i
, который является аргументом в пользу сценария и копирует все после символа =
. Таким образом, если я делаю что-то как myscript.sh -e=wow
, это копирует wow
кому: $EXTENSION
. Но я хочу знать что символы #*=
средний в этом порядке? Это походит #*
вместе копия все после и =
символ, после которого он копирует, или действительно ли это более сложно?
Это - пример удаление префикса . Общая форма:
${variable#pattern}
, который удаляет самое короткое соответствие к шарику pattern
с начала variable
. В Вашем случае, pattern
состоит из (a) *
, который соответствует нулю или большему количеству любого символа и (b) =
, который соответствует всего =
.
См. man bash
для большего количества информации
$ i='ab=cd'
$ echo "${i#a}"
b=cd
$ echo "${i#*=}"
cd
Справочник
3.5.3 Bash Расширение Параметра Shell
[†¦]
${parameter#word}
слово расширено для создания шаблона так же, как в расширении имени файла (см. Расширение Имени файла ). Если шаблон соответствует началу расширенного значения параметра, то результатом расширения является расширенное значение параметра с самым коротким шаблоном соответствия [†¦] удаленный.
$ i='ab=cd'
$ echo "${i#a}"
b=cd
$ echo "${i#*=}"
cd
<глоток>, Бесстыдно украденный от ответ John's глоток>