从 Unix 外壳脚本中的 app.properties 中读取带有"="和空格的属性



我正在读取如下所示的属性,但因为我使用的是=号,所以它正在中断。如何阅读完整属性?在特性文件中dbName=jdbc://sample:8080;nameSpace=name1; --config host=sample

# Script used to read Property File
FILE_NAME=Test.prop
# Key in Property File
key="dbName"
# Variable to hold the Property Value
prop_value=""
getProperty()
{
prop_key=$1
prop_value=`cat ${FILE_NAME} | grep ${prop_key} | cut -d'=' -f2`
}
getProperty ${key}
echo "Key = ${key} ; Value = " ${prop_value}

只需删除第一个=之前的所有文本。

prop_value=$(grep "^${prop_key}=" ${FILE_NAME} | sed 's/[^=]*=//')

注意:
输入文件很少需要cat。我修改了grep模式,只匹配行开头的完整键。这样可以避免对可能包含指定键作为键或值的子字符串的行进行匹配。我用$(...)替换了backticks。

最新更新