значение загружаемой книги начинается с шаблона jinja2 и имеет двоеточие [дубликат]

Итак, просто чтобы понять это, преимущество интерфейса в том, что я могу отделить вызов метода от любого конкретного класса. Вместо этого создается экземпляр интерфейса, где реализация предоставляется из того класса, который я выбираю, который реализует этот интерфейс. Таким образом, у меня есть много классов, которые имеют сходную, но немного отличающуюся функциональность, а в некоторых случаях (случаи, связанные с намерением интерфейса) не заботятся о том, какой именно объект.

Например, я мог бы интерфейс движения. Метод, который делает что-то «движение», и любой объект (Person, Car, Cat), который реализует интерфейс движения, может быть передан и передан для перемещения. Без метода, каждый из которых знает тип класса.

24
задан Chris 8 August 2015 в 04:28
поделиться

5 ответов

вам нужно заключить всю строку в ", где появляется :.

lineinfile:
'dest=/var/www/kibana/config.js
backrefs=true
regexp="(elasticsearch.* \"http.*)$"
line="elasticsearch\: \ {{ elasticsearch_URL }}:{{ elasticsearch_port }} \ "
state=present'  

См. следующие страницы: Ссылка-1 Ссылка-2 Ссылка-3

22
ответ дан sunbabaphu 21 August 2018 в 19:39
поделиться

foo=bar является более подходящим форматом для однострочной директивы, но поскольку вы все равно уже охватываете несколько строк с вашими параметрами, просто измените = на :, и он не будет суетиться с двоеточием в вашей строке.

- name: Comment out elasticsearch the config.js to ElasticSearch server
  lineinfile:
    dest:     /var/www/kibana/config.js
    backrefs: true
    regexp:   'elasticsearch.* "http.*$'
    line:     'elasticsearch: "{{ elasticsearch_URL }}:{{ elasticsearch_port }}"'
    state:    present
1
ответ дан Chris 21 August 2018 в 19:39
поделиться

Это уже строка; вам не нужно (и не может, как видно здесь) избегать двоеточий внутри него.

line="elasticsearch: \" {{ elasticsearch_URL }}:{{ elasticsearch_port }} \" "
0
ответ дан Ry- 21 August 2018 в 19:39
поделиться

Просто держите двоеточие в кавычках отдельно -

regexp="(elasticsearch.* \"http.*)$" line="elasticsearch':' \" {{ elasticsearch_URL }}:{{ elasticsearch_port }} \" "

9
ответ дан theharshest 21 August 2018 в 19:39
поделиться
  • 1
    Большое спасибо! Принятый ответ на самом деле не отрезал его для меня. – radtek 26 May 2015 в 20:26

Решение, которое будет работать в любом случае независимо от того, сколько вложенных котировок вы могли бы иметь и не заставляя вас добавлять больше цитат вокруг всего (что может оказаться сложным в невозможном в зависимости от строки, которую вы хотите записать) выведите двоеточие через выражение Jinja2, которое просто возвращает двоеточие в виде строки:

{{ ":" }}

Или в вашей полной строке:

line="elasticsearch\: \" {{ elasticsearch_URL }}{{ ":" }}{{ elasticsearch_port }} \" "

Credit к этому относится джитп пользователя github.

14
ответ дан udondan 21 August 2018 в 19:39
поделиться
  • 1
    Но это делает скрипты оболочки почти нечитаемыми: awk -F{{ ":" }} '/[^{{ ":" }}]*{{ ":" }}\$/{print " " $1 "{{ ":" }} " $2}' /tmp/shadow – ceving 26 January 2017 в 10:23
Другие вопросы по тегам:

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