используя sed для замены скобок на env var - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь заменить текст в скобках, например [PROJECT_ID], на env var PROJECT_ID ... Я пробовал это:

export PROJECT_ID=adfaf@asdf.com
echo "[PROJECT_ID]" >> test.text
sed -i -e 's|[PROJECT_ID]|$PROJECT_ID|g' test.text

Я получаю это: [$PROJECT_ID$PROJECT_ID$PROJECT_ID$PROJECT_ID$PROJECT_ID$PROJECT_ID$PROJECT_ID$PROJECT_ID$PROJECT_ID$PROJECT_ID]

Я пробовал много разных способов, но просто не могу заставить это работать

Ответы [ 2 ]

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

Вы должны выйти из скобок с обратной косой чертой, чтобы буквально соответствовать им.

PROJECT_ID=adfaf@asdf.com
echo "[PROJECT_ID]" > test.text
sed -i -e "s|\[PROJECT_ID\]|$PROJECT_ID|g" test.text
0 голосов
/ 01 февраля 2019
  • При каждом запуске вы добавляете одну и ту же строку в text.txt.Таким образом, sed обрабатывает много строк
  • Одинарные кавычки, как в 's|[PROJECT_ID]|$PROJECT_ID|g', используют текст буквально.Но похоже, что вы хотите расширить $ PROJECT_ID.
  • В этом случае export не требуется.
  • Не совсем понятно, чего вы действительно хотите

Исправлен код (мое предположение):

PROJECT_ID=adfaf@asdf.com
echo "[PROJECT_ID]" > test.text
sed -i -e "s|[PROJECT_ID]|$PROJECT_ID|g" test.text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...