首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >类Java属性文件到环境变量

类Java属性文件到环境变量
EN

Unix & Linux用户
提问于 2019-01-29 09:35:39
回答 1查看 2.7K关注 0票数 0

我需要将properties文件的每个属性转换为一个环境变量:

我是说,猜这个财产档案:

代码语言:javascript
运行
复制
mongo.port=27017
mongo.host=127.0.0.1
mongo.databaseName = test

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

我希望将它们作为环境变量创建为

代码语言:javascript
运行
复制
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

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-01-29 11:54:24

下面是一个可以这样做的简短脚本:

代码语言:javascript
运行
复制
#!/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’前缀到每一行。最后,清除两个临时文件。

样本输出:

代码语言:javascript
运行
复制
$ 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

生成输出文件后,将其源用于实际设置环境中的变量。以下两种语法之一可用于此:

代码语言:javascript
运行
复制
. output.props
source output.props
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/497390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档