类似 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

有什么工具或脚本可以得到这个吗?

我正在使用 ubuntu 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

相关内容