我需要将properties文件的每个属性转换为一个环境变量:
我是说,猜这个财产档案:
mongo.port=27017
mongo.host=127.0.0.1
mongo.databaseName = testbo.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
发布于 2019-01-29 11:54:24
下面是一个可以这样做的简短脚本:
#!/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.propshttps://unix.stackexchange.com/questions/497390
复制相似问题