правильное использование атома $ в подстановке параметра

Возможно, вы знаете, что дистрибутив CentOS Linux - это платформа, полученная из исходных кодов Red Hat Enterprise Linux (RHEL). Таким образом, пакеты, взятые из репозитория Centos, должны работать на RHEL и наоборот, если версии совпадают.

См .:

Обратите внимание, что если вы установите что-либо, кроме RHEL, в свой поддерживаемая установка RHEL, вы можете потерять официальную поддержку. Пакет CentOS, установленный в системе RHEL, не будет поддерживаться Red Hat.

См .:

1
28.12.2016, 16:34
2 ответа
Как вы выяснили, правильно использовать
clean_version=${project_version%%-*}

.

% и %% совпадают на конце по определению, поэтому нет необходимости в привязке, такой как $ , чтобы говорить о совпадении в конец.

Для справки # и ## совпадают в начале.

Интересным случаем является расширение / , которое по умолчанию соответствует любому месту. Здесь первый символ , являющийся # или % , заставляет шаблон совпадать в начале или в конце.

4
27.01.2020, 23:16

Идиома bash $ {var %% pattern} использует шаблон, а не регулярное выражение.

В шаблоне . * означает нечто иное, чем предполагаемое вами «что-нибудь».
Фактически, простой * действительно соответствует запуску любого символа в шаблоне.

Кроме того, тип соответствия % (по своей природе) ограничен $ .

Итак, это:

echo ${project_version%%-*}

Будет соответствовать самому длинному совпадению ( %% вместо % ) тире ( - ) с последующим запуском любого символа до конца строки внутри project_version .

Тогда правильное назначение будет:

clean_version=${project_version%%-*}
1
27.01.2020, 23:16

Теги

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