Что делает хеш после того, как имя переменной сделает как оператор в ударе?

Я нашел этот код:

EXTENSION="${i#*=}"

То, что это делает, должно взять переменную $i, который является аргументом в пользу сценария и копирует все после символа =. Таким образом, если я делаю что-то как myscript.sh -e=wow, это копирует wow кому: $EXTENSION. Но я хочу знать что символы #*= средний в этом порядке? Это походит #* вместе копия все после и = символ, после которого он копирует, или действительно ли это более сложно?

4
задан 8 August 2017 в 15:58

2 ответа

Это - пример удаление префикса . Общая форма:

 ${variable#pattern}

, который удаляет самое короткое соответствие к шарику pattern с начала variable. В Вашем случае, pattern состоит из (a) *, который соответствует нулю или большему количеству любого символа и (b) =, который соответствует всего =.

См. man bash для большего количества информации

Пример

$ i='ab=cd'
$ echo "${i#a}" 
b=cd
$ echo "${i#*=}" 
cd
8
ответ дан 23 November 2019 в 11:40

Справочник

3.5.3 Bash Расширение Параметра Shell

[†¦]

${parameter#word}

слово расширено для создания шаблона так же, как в расширении имени файла (см. Расширение Имени файла ). Если шаблон соответствует началу расширенного значения параметра, то результатом расширения является расширенное значение параметра с самым коротким шаблоном соответствия [†¦] удаленный.

Пример

$ i='ab=cd'
$ echo "${i#a}" 
b=cd
$ echo "${i#*=}" 
cd

<глоток>, Бесстыдно украденный от ответ John's

5
ответ дан 23 November 2019 в 11:40

Другие вопросы по тегам:

Похожие вопросы: