환경 변수에 대한 Java와 유사한 속성 파일

환경 변수에 대한 Java와 유사한 속성 파일

properties파일의 각 속성을 환경 변수로 변환 해야 합니다 .

내 말은, 이 속성 파일을 추측해 보세요:

mongo.port=27017
mongo.host=127.0.0.1
mongo.databaseName = test

bo.url-jwt=https://localhost:8089/token

환경 변수로 만들고 싶습니다.

export MONGO_PORT=27017
export MONGO_HOST=127.0.0.1
export MONGO_DATABASENAME=test
export BO_URL_JWT=https://localhost:8089/token

이것을 얻을 수 있는 도구나 스크립트가 있나요?

우분투 18x + zsh를 사용하고 있습니다

답변1

이 작업을 수행하는 짧은 스크립트는 다음과 같습니다.

#!/bin/bash
tmp1=$(mktemp)
tmp2=$(mktemp)

cut -d= -f 1 props.txt  | tr '[:lower:]' '[:upper:]' | tr '.-' '_' > $tmp1
cut -d= -f 2 props.txt > $tmp2

paste -d= $tmp1 $tmp2 > output.props

sed -i 's/ *= */=/' output.props
sed -i 's/^/export /' output.props

rm $tmp1 $tmp2

스크립트는 다음과 같이 작동합니다. 두 개의 임시 파일을 생성하는 데 사용됩니다 mktemp. 입력 속성 파일은 "=" 문자로 분할되며 두 개의 해당 필드가 두 파일 모두에 전송됩니다.

첫 번째 필드(속성 이름)에서는 tr명령이 두 번 적용됩니다. 한 번은 소문자를 대문자로 변환하고 한 번은 특수 문자를 밑줄로 변경합니다. 필드 값은 이러한 변경 후에만 임시 파일에 기록됩니다.

처리가 완료되면 이 paste명령을 사용하여 필드를 단일 파일인 output.props로 다시 그룹화합니다. 그런 다음 sed두 가지 명령을 사용하십시오. 첫 번째는 "=" 문자 주위의 모든 공백 문자를 제거합니다. 그렇지 않으면 이는 명령에 대한 구문 오류가 됩니다 export. 두 번째 sed명령은 각 줄에 "export"라는 문자열을 접두어로 붙이는 데 사용됩니다. 마지막으로 이 두 개의 임시 파일이 정리됩니다.

예제 출력:

$ cat output.props
export MONGO_PORT=27017
export MONGO_HOST=127.0.0.1
export MONGO_DATABASENAME=test
export BO_URL_JWT=https://localhost:8089/token

출력 파일을 생성한 후 이를 사용하여 환경에서 실제로 변수를 설정합니다. 이를 위해 다음 두 구문 중 하나를 사용할 수 있습니다.

. output.props
source output.props

관련 정보