Выполнение sed из docker-compose - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь выполнить команду sed из файла docker compose.Команда ищет соответствие текста в файле, а затем заменяет следующую строку текста текстом, который я выполняю:

 command: bash -c "sed ''/Http Basic Authentication Filter/!b;n;c<filter>'' webapps/engine-rest/WEB-INF/web.xml > webapps/engine-rest/WEB-INF/noauth.xml"

Я могу запустить команду непосредственно в bash, и она работает какОжидается, что при запуске docker-up я получаю:

sed: unmatched '/'
bash: n: command not found
bash: filter: No such file or directory

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

Я также попробовал следующее, чтобы избежать экранирования символов:

    command: > 
     bash -c sed '/Http Basic Authentication Filter/!b;n;c<filter>' webapps/engine-rest/WEB-INF/web.xml > webapps/engine-rest/WEB-INF/noauth.xml

1 Ответ

0 голосов
/ 11 февраля 2019

Вам не нужно избегать одинарных кавычек внутри двойных кавычек.Двойные одинарные кавычки (sic) пропускаются через дословно, производя /Http, поскольку первая строка sed видит, что явно не имеет закрывающей косой черты.

Цитирование YAML потребовало бы двойных одинарных кавычек, если строка была заключенав одинарных кавычках;но вы использовали двойные кавычки, поэтому одиночная кавычка в значении не нуждается в экранировании (и попытка фактически не приведет к кавычкам после того, как оболочка удалит соседние пары пустых кавычек).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...