Откат от этого вопроса У меня есть команда (работает в Docker контейнере), где я пытаюсь sed заменить выражение на JSON строку, сгенерированную jq.
Крошечная предыстория:
У меня есть белый список переменных env в файле tmp.txt
:
ENV_VAR_A
ENV_VAR_B
ENV_VAR_C
Я использую jq, используя ответ в предыдущем потоке, чтобы сгенерировать JSON Строка, как это:
jq -Rn '[inputs | {(.): env[.]}] | add' ./tmp.txt
# GENERATES { "ENV_VAR_A": "a val", "ENV_VAR_B": "a val", "ENV_VAR_C": "a val"}
Удивительно! Теперь я пытаюсь использовать sed (как Docker CMD
) для замены чего-либо:
# CMD sed -i 's@{{SOME_PATTERN}}@'$( jq -Rn '[inputs | {(.): env[.]}] | add' ./etc/nginx/conf.d/env)'@' ./somefile
Но я получаю:
sed: -e expression #1, char 22: unterminated `s' command
Так что что-то пошло не так подстановка - но я не достаточно разбираюсь в оболочке, чтобы понять, как это исправить, я чувствую, что должен переместить некоторые кавычки / разделители или, возможно, направить свой jq к чему-то, чтобы «очистить» строку json перед Я заменяю, но я не уверен, что.
Ищете немного сед-фу, кто-нибудь может помочь?