2개의 .env 파일을 비교한 후 다른 파일을 기반으로 기본 파일의 값을 덮어쓰는 스크립트

2개의 .env 파일을 비교한 후 다른 파일을 기반으로 기본 파일의 값을 덮어쓰는 스크립트

2개의 env 파일이 있습니다. 하나는 기본값 .env이고 다른 하나는 입니다 .env.overwrite.

실행하고 매개변수를 지정할 때 다음과 같은 스크립트 파일을 원합니다.

./rebuild_env .env .env.overwrite

.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

나는 지금 3일 동안 인터넷에서 조사하려고 노력했지만 내 필요에 맞는 것을 찾을 수 없습니다. 누구든지 나를 안내해 줄 수 있나요? 당신의 도움에 정말 감사드립니다.

답변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

관련 정보