Почему имена файлов некоторых юнитов заканчиваются на @?

Вы просто проверяете, содержит ли имя файла определенную подстроку? Потому что, если вы сделаете это с помощью [[ =~ ]], вам не нужны ведущая и конечная .*части :, совпадение с регулярным выражением больше похоже на поиск , достаточно, чтобы совпадение можно было найти где угодно в строке.

Кроме того, в Bash цитирование (частей )шаблона (или переменной, содержащей шаблон ), удаляет специальные значения символов в кавычках. Так, например. это будет соответствовать:

re=' + '
[[ "foo + doo" =~ "$re" ]] && echo match

хотя это не соответствует (плюс теперь особенный и не совпадает сам с собой):

re=' + '
[[ "foo + doo" =~ $re ]] && echo match

Для сравнения, соответствие не -регулярному выражению потребует сопоставления со всей строкой, поэтому вам нужны начальный и конечный*:

pattern=' * '
[[ "foo * doo" = *"$pattern"* ]] && echo match
23
26.05.2020, 08:44
1 ответ

Это шаблон:https://www.freedesktop.org/software/systemd/man/systemd.service.html#Service%20Templates

Он создается путем создания ссылки на unit@instance.type, где источником ссылки является unit@.type. Значение instanceдоступно в файле модуля systemd с использованием %iили %Iи позволяет вам написать один файл конфигурации модуля, который можно использовать несколько раз с параметром.

Хотя самой понятной документацией по systemd для этого являются «Шаблоны служб», вы можете создать шаблон любого типа юнита, как описано в справочной странице systemd.unit (5 ):https://www.freedesktop.org/software/systemd/man/systemd.unit.html

17
18.03.2021, 23:33

Теги

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