linux/shell:读取包含'.'键名的.properties文件
时间:2022-06-24
本文章向大家介绍linux/shell:读取包含'.'键名的.properties文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
如果properties中的key名只是由字母数字组成,那读取properties中的property很简单,示例如下:
假设.properties中内容为:
prop1.properties
username=tom
读取prop1.properties中的username
. prop1.properties
echo $username
但是如果key的名字包含了.
(比如redis.port
),这个办法就不能用了,因为linux shell中不允许变量名有.
符号。
网上找到这篇文章 《linux – 如何读取包含使用Shell脚本具有句点字符的键的.properties文件
》,提供了另一种解决办法,就是以文本方式读取properties文件,解析每一行=
号两边的内容,将key中的.
替换为_
.但是这篇文章提供的脚本有一个漏洞:就是没有处理注释符号#
.所以容易会带来逻辑隐患。所以在这篇文章提供的脚本的基础我改进了一下,对于以#
起始的行不处理。
实现代码如下:
#!/bin/bash
config="$HOME/your.properties"
if [ -f "$config" ]
then
echo "$config found."
while IFS='=' read -r key value
do
## '.'替换为'-'
key=$(echo $key | tr '.' '_')
## 不处理注释符#起始的key
[[ -z $(echo "$key" | grep -P 's*#+.*' ) ]]
&& eval "${key}='${value}'"
&& echo key=$key value=$value
done < "$config"
else
echo "$config not found."
fi
另一个简单的实现是这样的:
#!/bin/bash
config="$HOME/your.properties"
# 定义一个函数从properties文件读取key
function prop {
[ -f "$config" ] && grep -P "^s*[^#]?${1}=.*$" $config | cut -d'=' -f2
}
# 调用示例
echo redis.port=$(prop "redis.port")
- 【Go 语言社区】HTML5 Canvas+JS控制电脑或手机上的摄像头实例
- MySQL Profile在5.7的简单测试(r10笔记第50天)
- 【Go 语言社区】Golang中interface判断nil问题
- 有趣的rownum测试(r10笔记第49天)
- 【Go 语言社区】关于Golang 数据缓存到redis内存数据库遇到的问题
- go中的读写锁RWMutex
- Centos7.4 版本环境下安装Mysql5.7操作记录
- 你必须知道的23个最有用的Elasticseaerch检索技巧
- Elasticsearch Jest实战深入详解
- 在oracle中计算时间差
- 【Go 语言社区】GO中怎么处理URL编码?
- C语言库函数rename
- Oracle 12c DG新特性Far Sync(r10笔记第67天)
- iOS微信特殊字符保护方案
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 数据结构 - 堆(Heap)
- 信息收集之主机发现:masscan
- 信息收集之社工字典
- CloudBase CMS 2.0 焕新升级,从「心」出发!
- 使用MySQL Keyring 的 SECRET类型密钥执行非对称加密
- node egg 实现跨域
- 使用Markdown画流程图
- HBase NotServingRegionException
- Flink SQL 写入 Hive表的性能问题
- 文件系统索引extent 和 bitmap区别
- MySQL的Bugs
- 对复制实施主键约束
- MySQL如何管理客户端的连接?
- 鸿蒙 Ability 讲解(页面生命周期、后台服务、数据访问)
- MySQL如何管理客户端连接?线程池篇