bash - 使用 bash 解析 .env 文件并将其注入(inject)命令行

标签 bash unix kubernetes environment-variables kubectl

我正在使用 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=或者如果你也想摆脱它(最后用管道输入 sedawk 并用你需要的任何东西替换它)

关于bash - 使用 bash 解析 .env 文件并将其注入(inject)命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54665711/

相关文章:

linux - 如何根据时间戳从巨大的文本文件中删除记录?

mysql - 通过 BASH 脚本更新 MYSQL 表给出语法错误

用于生产的 Kubernetes 卷

kubernetes - 稳定/Airflow 连接外部 PostgreSQL 数据库

regex - 如何关闭除current之外的其他shell?

kubernetes - Kubernetes不会显示所有组件状态

bash - 当进程死亡时执行命令

linux - 'size' vs 'ls -l' 获取可执行文件的大小

debugging - 意外的运算符(operator) [ : git: in bourne shell script 'if' conditional statement

linux - sqlplus 中大于 4GB 的假脱机文件