我正在使用 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 能力现在不是最强的。知道如何解决这个问题吗?
最佳答案
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
并用你需要的任何东西替换它)
关于bash - 使用 bash 解析 .env 文件并将其注入(inject)命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54665711/