Использование bash для разбора файла .env и внедрения его в командную строку - PullRequest
0 голосов
/ 13 февраля 2019

Я использую kubernetes и пытаюсь вызвать следующую команду:
kubectl set env deployment/server A=a B=b ...etc Мои переменные env находятся в файле .env, и каждое значение может содержать пробелы, неэкранированные символы, комментарии, пустые строки и т. Д.:

## Common variables
NODE_ENV=production


## Server variables
SERVER_PORT=8009
CORS_ORIGIN=https://www.example.io,http://www.example.io,http://localhost:3000
SESSION_SECRET=/qm%7HLw"pk(8@"pja#I9CbN#2Lg[%d>5{CDA_9g|ZvZmuZ$]=';EhA#g+C;1>&

Я пытаюсь разобрать файл .env, чтобы интегрировать его в команду:

kubectl set env deployment/server $(do magic with .env file to extract the escaped variables)

Пробовал grep -v '^#' .env | xargs, но он не работает с символамичто нужно убежать или цитаты.Мои способности bash сейчас не самые сильные.Есть идеи, как это решить?

1 Ответ

0 голосов
/ 13 февраля 2019
cat .env | grep -v '^#\|^$' | xargs -0 echo | tr '\n' ' '

Это напечатало бы все в одной строке: NODE_ENV=production SERVER_PORT=8009 CORS_ORIGIN=https://www.example.io,http://www.example.io,http://localhost:3000 SESSION_SECRET=/qm%7HLw"pk(8@"pja#I9CbN#2Lg[%d>5{CDA_9g|ZvZmuZ$]=';EhA#g+C;1>&

Я не уверен, нужно ли вам сохранить VAR= или вы также хотели бы избавиться от этогоsed или awk в конце, затем замените его на все, что вам нужно)

...