我有 2 个 env 文件。一个是默认值.env
,另一个是.env.overwrite
。
我想要一个脚本文件,当我运行并指定参数时,例如:
./rebuild_env .env .env.overwrite
它将把 in 中每个键的值覆盖.env
为 中的键.env.overwrite
。如果某些键不存在则.env.overwrite
保留默认值。例如:
对于.env
文件:
VALUE1=default_value1
VALUE2=default_value2
VALUE3=default_value3
并在.env.overwrite
文件中:
VALUE1=new_value1
VALUE3=new_value3
运行该脚本后,.env
文件将是:
VALUE1=new_value1
VALUE2=default_value2
VALUE3=new_value3
我已经尝试在互联网上研究三天了,但找不到适合我需要的。有人可以帮助指导我吗?我真的很感谢你的帮助。
答案1
最简单的解决方案是连接两个文件:
cat .env .env.overwrite > .env.new
那么最后更新的条目将成为活动条目。现在我们只需要删除所有的重复条目即可。
如果顺序和其他评论并不重要:
for variable in \
$(cut -d= -f1 .env.overwrite .env | sort |uniq) ;
do
grep ^${variable}= .env.overwrite || \
grep ^${variable}= .env ;
done