我正在使用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能力目前不是最强。知道如何解决这个问题吗?
答案 0 :(得分:2)
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
中,然后替换它随您需要)