Вы просто проверяете, содержит ли имя файла определенную подстроку? Потому что, если вы сделаете это с помощью [[ =~ ]]
, вам не нужны ведущая и конечная .*
части :, совпадение с регулярным выражением больше похоже на поиск , достаточно, чтобы совпадение можно было найти где угодно в строке.
Кроме того, в Bash цитирование (частей )шаблона (или переменной, содержащей шаблон ), удаляет специальные значения символов в кавычках. Так, например. это будет соответствовать:
re=' + '
[[ "foo + doo" =~ "$re" ]] && echo match
хотя это не соответствует (плюс теперь особенный и не совпадает сам с собой):
re=' + '
[[ "foo + doo" =~ $re ]] && echo match
Для сравнения, соответствие не -регулярному выражению потребует сопоставления со всей строкой, поэтому вам нужны начальный и конечный*
:
pattern=' * '
[[ "foo * doo" = *"$pattern"* ]] && echo match
Это шаблон: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